JDBC 면접 질문 및 답변 상위 50개(2025)

다음은 꿈의 직업을 얻기 위한 신입 지원자와 경력 지원자를 위한 JDBC(Java Database Connectivity) 인터뷰 질문과 답변입니다.

무료 PDF 다운로드: JDBC 인터뷰 질문


1) JDBC란 무엇인가?

JDBC는 Java 데이터베이스 연결을 나타냅니다. JDBC는 데이터베이스와 통신하고 SQLQuery를 실행하는 Java API입니다.


2) JDBC 드라이버란 무엇이며 사용 가능한 JDBC 드라이버는 몇 개입니까?

JDBC 드라이버에는 Java 애플리케이션과 데이터베이스를 지원하는 클래스와 인터페이스가 포함되어 있습니다.

JDBC 드라이버에는 4가지 유형이 있습니다.

  1. 유형 1 드라이버 또는 JDBC-ODBC 브리지 드라이버.
  2. 유형 2 드라이버 또는 기본-API, 부분적으로 Java 드라이버.
  3. 유형 3 드라이버 또는 네트워크 프로토콜, 순수 Java 드라이버.
  4. 유형 4 드라이버 또는 기본 프로토콜, 순수 Java 드라이버.

3) 어떻게 연결하나요? MySQL의 아니면 Java를 사용하는 Oracle인가요?

//for MySQL {
try {

Class.forName ("com.mysql.jdbc.Driver");

con=DriverManager.getConnection ("jdbc: mysql://localhost:3306/dbanme", "username", "password");

Statement st=con.createstatement ();

Resultset rs=st.executeQuery ("select * from user");

rs.next (); catch (ClassNotFoundException e) {

System.err.println ("ClassNotFoundException in get Connection," + e.getMessage()); }

catch (SQLException e) {

System.err.println ("SQLException in getConnection," + e.getMessage ()) ;}

//for oracle

{

try

{

Class.forName ("oracle.jdbc.driver.OracleDriver");

con= DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:dbname", "username", "password");

Statement st=con.createstatement();

Resultset rs=st.executeQuery("select * from user");

Rs.next();

} catch (ClassNotFoundException e) {

System.err.println("ClassNotFoundException in get Connection," +e.getMessage()); }

catch (SQLException e) {

System.err.println("SQLException in getConnection, " + e.getMessage()); } return con; }

코드 설명

Class.forName은 JDBC 드라이버의 인스턴스를 생성하고 DriverManager에 등록합니다.

getConnection() 메소드는 항상 데이터베이스에 대한 연결을 설정합니다.

위의 연결 개체에서 명령문 개체를 만들어야 합니다. 명령문은 결과 집합 개체를 반환합니다. ResultSet.next()는 결과 집합이 여전히 행을 반환하는 경우를 의미합니다.


4) 어떤 JDBC 드라이버가 가장 빠른 드라이버입니까?

유형 4 드라이버 또는 순수 Java 드라이버인 기본 프로토콜이 가장 빠른 드라이버입니다.


5) JDBC API 구성 요소는 무엇입니까?

네 가지 유형의 구성 요소가 있습니다.

  1. JDBC API
  2. JDBC 드라이버 관리자
  3. JDBC 테스트 스위트
  4. JDBC-ODBC 브리지
JDBC 면접 질문
JDBC 면접 질문

6) JDBC 선언문이란 무엇입니까?

JDBC 문에는 다음과 같이 3가지 유형이 있습니다.

  1. 성명서: 실행됩니다 SQL 데이터베이스에 대한 쿼리(정적 SQL 쿼리)입니다.
  2. 준비된 진술: SQL문을 반복적으로 실행하고 싶을 때 사용합니다. 입력 데이터는 동적이며 런타임 시 입력됩니다.
  3. 호출 가능 명령문: 저장 프로시저를 실행하려고 할 때 사용됩니다.

7) 저장 프로시저를 어떻게 실행할 수 있나요?

JDBCcallable 문을 사용하여 저장 프로시저를 실행할 수 있습니다. 코드는 다음과 같습니다.

Connection conn = null;

CallableStatement callStmt = conn.prepareCall("{call myStoreproc(?, ?)}");

callStmt.setString(1, "abcdefg");


8) Java에서 ReadyStatement를 사용하면 어떤 이점이 있나요?

준비된 문은 동일한 SQL 문을 반복적으로 실행하는 데 사용됩니다. 준비된 문장은 n번을 사용해도 한번만 컴파일됩니다.


9) 결과세트란 무엇입니까?

java.sql.ResultSet 인터페이스는 SQL 쿼리의 결과 집합을 의미합니다. 이는 커서가 테이블의 행을 가리키고 있음을 의미합니다. 첫 번째 행 앞을 가리킵니다.


10) ResultSet의 유형은 무엇입니까?

ResultSet에는 세 가지 유형이 있습니다. ResultSet을 선언하지 않으면 TYPE_FORWARD_ONLY를 호출한다는 의미입니다.

  1. TYPE_FORWARD_ONLY: 커서는 앞으로만 이동할 수 있습니다.
  2. TYPE_SCROLL_INSENSITIVE: 커서는 앞뒤로 이동할 수 있지만 민감하지 않습니다.
  3. TYPE_SCROLL_SENSITIVE: 커서는 앞뒤로 이동할 수 있지만 민감합니다.

11) JDBC에서 RowSet과 ResultSet의 차이점을 설명하시겠습니까?

DB에 대한 ResultSet 핸들 연결에서는 Result를 직렬화된 객체로 만들 수 없습니다.

위의 문제로 인해 네트워크를 통해 Resultset을 전달할 수 없습니다.

RowSet은 ResultSet 인터페이스를 확장하므로 ResultSet의 모든 메소드를 보유합니다. RowSet은 직렬화됩니다.

따라서 Rowset은 데이터베이스와 연결되어 있지 않기 때문에 한 클래스에서 다른 클래스로 전달할 수 있습니다.


12) JDBC에서 setAutoCommit(false)를 사용하는 이유는 무엇입니까?

자동 커밋을 끄려면 Connection.setAutoCommit(false)를 설정하세요.


13) JDBC의 데이터베이스 경고란 무엇이며 JDBC에서 데이터베이스 경고를 어떻게 처리할 수 있습니까?

SQL 경고 또는 데이터베이스 경고는 SQLException 클래스의 하위 클래스입니다. Connection, State, ResultSet에서 getWarnings() 메소드를 사용하여 이를 처리할 수 있습니다.


14) null ResultSet을 얻을 수 있나요?

아니요, null Resultset을 얻을 수 없습니다. ResultSet.next()는 다음 레코드에 행이 포함되지 않은 경우 null을 반환할 수 있습니다.


15) 메타데이터란 무엇을 의미하며 우리가 이를 사용하는 이유는 무엇입니까?

메타데이터란 데이터 또는 기타 데이터에 관한 정보를 의미합니다. 메타데이터를 사용하여 데이터베이스 제품 버전, 드라이버 이름, 총 테이블 및 뷰 수를 가져옵니다.


16) JDBC에서 실행, ExecuteQuery, ExecuteUpdate의 차이점은 무엇입니까?

Execute(): 모든 종류의 SQL 쿼리에 사용할 수 있습니다.

excuteQuery() : 쿼리 선택에 사용할 수 있습니다.

ExecuteUpdate(): 테이블을 변경/업데이트하는 데 사용할 수 있습니다.


17) 데이터베이스 연결 풀링이란 무엇입니까? 연결 풀을 사용하면 어떤 이점이 있나요?

연결 풀링은 연결이 캐시에 저장되고 나중에 다시 사용할 수 있음을 의미합니다.

이점:

  1.  더 빠릅니다.
  2.  연결 풀링을 사용하면 데이터베이스 연결을 진단하고 분석하기가 더 쉬워집니다.

18) DriverManager 클래스의 기능은 무엇입니까?

사용자와 운전자 간의 인터페이스입니다. DriverManager는 데이터베이스와 해당 드라이버 간의 모든 활동을 추적합니다.


19) 일괄 업데이트의 의미는 무엇입니까?

일괄 업데이트는 SQL 쿼리 세트/그룹을 한 번에 실행하는 것을 의미합니다.

일괄 업데이트는 삽입, 업데이트, 삭제에만 사용할 수 있으며 선택 쿼리에는 사용할 수 없습니다.


20) JDBC API에서 사용할 수 있는 패키지는 몇 개입니까?

JDBC API에서는 두 가지 유형의 패키지를 사용할 수 있습니다.

  1. java.sql
  2. javax.sql

21) Execute, ExecuteQuery, ExecuteUpdate의 반환 유형은 무엇입니까?

실행의 반환 유형은 부울입니다.

ExecuteQuery의 반환 유형은 ResultSet 객체입니다.

ExecutionUpdate의 반환 유형은 int입니다.


22) 결과 세트의 인덱스는 0으로 시작합니까, 아니면 1로 시작합니까?

결과 세트의 인덱스는 1부터 시작합니다.


23) 드라이버를 로드하는 동안 Class.forName의 역할은 무엇입니까?

Class.forName은 JDBC 드라이버의 인스턴스를 생성하고 DriverManager에 등록합니다.


24) JDBC-ODBC 브리지는 멀티스레드로 구성되어 있습니까?

아니요, JDBC-ODBC Bridge는 동기화된 방법을 사용하여 ODBC에 대한 모든 호출을 직렬화합니다.


25) JDBC에서 트랜잭션 관리를 처리하는 인터페이스는 무엇입니까?

연결 인터페이스는 JDBC의 트랜잭션 관리를 처리합니다. 커밋(), 롤백() 등의 방법을 제공합니다.


26) "적합한 드라이버가 없습니다" 오류가 발생하는 이유는 무엇입니까?

DriverManager.getConnection 메서드를 호출할 때 적합한 드라이버가 없습니다.”라는 오류가 발생합니다.

이는 다음과 같은 이유로 발생할 수 있습니다:

  • getConnection 메소드를 호출하기 전에 정확한 JDBC 드라이버를 로드할 수 없습니다.
  • 유효하지 않거나 잘못된 JDBC URL일 수 있습니다.

27) 준비된 진술이 더 빠릅니다. 왜?

준비된 문 실행은 문이 한 번만 컴파일되므로 직접 실행보다 빠릅니다. 준비된 구문과 JDBC 드라이버는 실행 중에 서로 연결되어 있어 연결 오버헤드가 없습니다.


28) 여러 데이터베이스에 연결할 수 있나요? 단일 명령문을 사용하여 XNUMX개, XNUMX개 또는 다수의 데이터베이스에서 데이터를 업데이트하거나 추출할 수 있습니까?

예, 동시에 여러 데이터베이스에 연결할 수 있지만 이는 특정 드라이버에 따라 다릅니다.

다른 데이터베이스에서 데이터를 업데이트하고 추출하려면 단일 명령문을 사용할 수 있습니다. 하지만 여러 데이터베이스 또는 단일 데이터베이스를 처리하려면 미들웨어가 필요합니다.


29) setMaxRows(int)와 SetFetchSize(int)의 차이점을 알려주세요.

setMaxRows(int) SetFetchSize(int)?
결과 집합이 한 번에 포함할 수 있는 행 수를 정의합니다. 데이터베이스에서 읽을 행 수를 정의합니다.

30) 특수문자에 대해 알려주세요.

특수 문자 앞에는 이스케이프 문자가 옵니다. 예 -

SELECT NAME FROM TABLE WHERE NAME LIKE '\_%' {escape '\'}

31) 데이터베이스에서 "더티 읽기"의 의미는 무엇입니까?

더티 읽기(Dirty Read)는 “정확할 수도 있고 정확하지 않을 수도 있는 값을 읽는다”는 의미입니다.


32) XNUMX단계 커밋이란 무엇을 의미하나요?

분산 트랜잭션 프로세스에서는 XNUMX단계 커밋이 사용됩니다. 트랜잭션이 실행 중이면 여러 데이터베이스에 영향을 미칩니다. 모든 데이터베이스를 서로 동기화하는 데 XNUMX단계 커밋이 사용됩니다.


33) JDBC에는 몇 개의 잠금 시스템이 있습니까?

JDBC에서는 두 명 이상의 사용자를 처리할 수 있는 두 가지 유형의 잠금을 사용할 수 있습니다.

두 명의 사용자가 동일한 레코드를 보고 있는 경우에는 잠금이 수행되지 않습니다. 한 사용자가 레코드를 업데이트하고 두 번째 사용자도 동일한 레코드를 업데이트하는 경우. 이때 우리는 잠금을 사용할 것입니다.

  1. 낙관적 잠금: "업데이트"할 때만 기록을 잠급니다.
  2. 비관적 잠금: 보기, 업데이트 및 커밋 시간을 위해 "선택"에서 레코드를 잠급니다.

34) JDBC에는 어떤 예외가 있나요?

JDBC에는 네 가지 유형의 예외가 있습니다.

  1. 일괄 업데이트 예외
  2. 데이터 잘림
  3. SQL 예외
  4. SQL 경고

35) JDBC를 사용하여 DB에 연결하는 단계를 알려주시겠습니까?

JDBC를 사용하여 데이터베이스를 연결하는 방법에는 두 가지가 있습니다.

  1. DriverManager 사용:

class.forName(드라이버 클래스) 및 Class.forName()을 사용하여 드라이버 클래스를 로드합니다.

포스트 로딩은 DriverManager에 제어권을 전달합니다.

DriverManager.getConnection()은 데이터베이스에 액세스하기 위한 연결을 생성합니다.

  1. 데이터소스 사용:

DataSource의 경우 JNDI의 도움으로 DriverManager를 사용할 필요가 없습니다. Naming 서비스 서버에서 DataSource를 조회합니다. DataSource.getConnection() 메소드는 Connection 객체를 DB에 반환합니다.


36) JDBC 아키텍처를 설명하세요.

JDBC API는 데이터베이스에 대해 2계층 모델과 3계층 모델을 모두 지원합니다.

2계층 모델에서 Java 애플리케이션은 데이터 소스와 상호 작용합니다.

3계층 모델에서는 명령이 서비스의 "중간 계층"으로 리디렉션됩니다. 그 후 명령이 데이터 소스로 전송됩니다.


37) JDBC 4.0에서 사용할 수 있는 새로운 기능은 무엇입니까?

새로운 기능은

  • JDBC 드라이버 클래스에 의한 자동 로딩
  • 향상된 연결 관리
  • RowId SQL이 활성화되었습니다.
  • 주석을 사용하여 SQL로 구현된 데이터 세트
  • SQL 예외 처리 개선
  • SQL 지원 XML 파일

38) JDBC에서 사용되는 패키지는 무엇입니까?

JDBC에서는 8개의 패키지가 사용됩니다 –

  1. sql.드라이버
  2. 연결
  3. 성명서
  4. 준비된 문
  5. 호출 가능문
  6. 결과 집합
  7. 결과세트메타데이터
  8. 데이터베이스메타데이터

39) JDBC에서는 몇 개의 RowSet을 사용할 수 있습니까?

두 가지 유형의 행 집합을 사용할 수 있습니다.

  1. 광범위한 연결 – 연결된 RowSet 객체는 즉시 데이터베이스에 연결됩니다. 애플리케이션이 종료되면 연결된 RowSet 객체도 종료됩니다.
  2. 연결 끊김 – 연결이 끊어진 RowSet 객체는 필수 쿼리를 실행한 후 데이터베이스에 연결됩니다.

40) 연결의 의미는 무엇입니까?

연결 인터페이스는 데이터베이스와의 상호작용을 위한 메소드로 구성됩니다.


41) JDBC 세이브포인트에 대해 설명해주세요.

저장점은 현재 트랜잭션이 롤백할 수 있는 지점을 나타냅니다. 모든 변경 사항을 롤백하는 대신 일부만 롤백하도록 선택할 수 있습니다.


42) DataSource 사용의 장점을 나열해 보세요.

데이터 소스는 관리자와 프로그래머/개발자의 작업을 나누어 수행합니다.

관리자는 DataSource 객체를 생성하고 이를 JNDI 레지스트리와 연결합니다. 프로그래머/개발자는 레지스트리에서 DataSource 개체를 검색합니다. 그런 다음 데이터베이스와의 연결을 설정합니다.


43) ResultSet 주변의 래퍼와 같은 JdbcRowSet이 필요한 이유는 무엇입니까?

ResultSet 객체를 JavaBeans 구성 요소로 사용할 수 있습니다.

  • JdbcRowSet은 JavaBeans 구성 요소로도 사용할 수 있습니다. 이것이 바로 디자인 또는 컴파일 타임에 생성 및 구성되고 런타임에 실행될 수 있는 이유입니다.
  • 모든 jdbcRowSet 객체는 스크롤 가능하고 업데이트 가능합니다.

44) 결과 세트를 볼 수 있는 방법은 몇 가지입니까?

ResultSet을 보는 방법에는 두 가지가 있습니다.

  1. 칼럼
  2. 열 인덱스.

예: getInt(문자열 열 이름), getInt(int 열 인덱스)


45) 결과 세트를 업데이트할 수 있는 방법은 몇 가지입니까?

다음 방법은 결과 세트를 업데이트하는 데 도움이 됩니다.

  • 업데이트행()
  • 행 삭제()
  • 새로 고침 행()
  • cancelRowUpdates()
  • 삽입행()

46) 왜 Java에서 데이터베이스 연결을 닫아야 합니까?

가장 좋은 방법은 결과 집합, 문 및 연결을 닫아야 한다는 것입니다. 연결이 풀에서 들어오는 경우 종료 시 연결은 재사용을 위해 풀로 다시 전송됩니다. 이 작업은 finally{} 블록에서 수행합니다. 왜냐하면 예외가 발생하더라도 이를 닫을 수 있는 기회가 있기 때문입니다.


47) JDBC에서 blob 데이터 유형을 사용하는 이유는 무엇입니까?

이는 이미지, 영화 등과 같은 대량의 데이터를 데이터베이스에 저장하는 데 사용됩니다.


48) ResultSet에서 동시성 속성을 설정하는 방법은 무엇입니까?

두 가지 동시성 수준이 있습니다.

  1. CONCUR_READ_ONLY – 읽기 전용입니다.
  2. CONCUR_UPDATABLE - 읽기 및 업데이트용입니다.

49) 클라이언트와 서버 데이터베이스 커서의 차이점은 무엇입니까?

서버 측 커서는 데이터 및 결과가 서버에 저장된다는 것을 의미합니다. 요청한 데이터가 클라이언트에 전송될 때만.

클라이언트 측 커서는 클라이언트 위치로 전송된 모든 데이터를 의미합니다.


50) JDBC를 사용하여 데이터베이스에 이미지를 어떻게 삽입합니까?

BLOB 데이터 유형을 사용하는 데이터베이스의 이미지로, 이미지는 바이트 스트림으로 저장됩니다. 아래 코드는 이미지를 DB에 삽입하는 방법을 보여줍니다.

Connection con = null;

PreparedStatement prs = null;

InputStream inputstrm = null;

Class.forName("oracle.jdbc.driver.OracleDriver");

con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:mydb","username","yourpassword");

//localhost is your machine or hostname

//1521 is your oracle database port number

//mydb is your oracle database name.

prs = con.prepareCall("insert into emp_profile values (?,?)");

prs.setInt(1, 1223);

inputstrm = new FileInputStream(new File("emp_img.jpg"));

prs.setBinaryStream(2, inputstrm);

int count = prs.executeUpdate();

이 인터뷰 질문은 당신의 비바(구술)에도 도움이 될 것입니다.

공유

댓글 2

  1. 화신 잔나비 말한다 :

    학생들에게 매우 유용합니다........

댓글을 남겨주세요.

귀하의 이메일 주소는 공개되지 않습니다. *표시항목은 꼭 기재해 주세요. *