산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

2026년 필수 JDBC 면접 질문 50가지 및 전문가 답변

2026년 필수 JDBC 면접 질문 50가지 및 전문가 답변

JDBC 면접을 준비하려면 데이터베이스 연결, 성능 튜닝, 보안 모범 사례에 대한 깊은 이해가 필요합니다. 다음 50가지 질문은 리크루터가 우선시하는 핵심 개념과 실전 시나리오를 다룹니다.

👉 무료 PDF 다운로드: JDBC 면접 질문 및 답변

1) JDBC란 무엇이며 Java 애플리케이션에서 왜 중요한가요?

JDBC(Java Database Connectivity)는 Java 프로그램이 관계형 데이터베이스와 상호작용할 수 있게 하는 핵심 API입니다. SQL 실행, 결과 처리, 트랜잭션 제어를 표준화하여 MySQL, Oracle, PostgreSQL 등 간에 최소한의 변경으로 전환 가능한 데이터베이스 독립적 코드 작성을 가능하게 합니다.

2) 네 가지 JDBC 드라이버 유형과 주요 차이점은?

3) JDBC 프로그램의 수명 주기를 설명하세요.

  1. 드라이버 로드: Class.forName("com.mysql.cj.jdbc.Driver")
  2. DriverManager 또는 DataSource를 통해 Connection 수립.
  3. Statement, PreparedStatement, CallableStatement 생성.
  4. SQL 실행 (쿼리, 업데이트, 프로시저).
  5. 해당하는 경우 ResultSet 처리.
  6. 모든 리소스 종료 (try-with-resources 선호).

4) Statement, PreparedStatement, CallableStatement를 언제 사용해야 하나요?

5) JDBC에서 트랜잭션을 어떻게 관리하나요?

  1. 자동 커밋 비활성화: conn.setAutoCommit(false)
  2. 여러 문장 실행.
  3. 성공 시 conn.commit(), 실패 시 conn.rollback().

자금 이체 같은 원자적 연산에 이 패턴 사용.

6) JDBC 커넥션 풀링의 장단점은?

HikariCP, Apache DBCP 같은 프레임워크가 업계 표준.

7) execute(), executeQuery(), executeUpdate() 차이점은?

8) JDBC 성능을 개선하는 전략은?

9) JDBC에서 배치 업데이트 설명.

PreparedStatement ps = conn.prepareStatement("INSERT INTO student VALUES(?,?)");
for(int i=1;i<=1000;i++){
    ps.setInt(1,i);
    ps.setString(2,"Name"+i);
    ps.addBatch();
}
ps.executeBatch();

라운드트립 감소 및 처리량 증대.

10) ResultSet의 역할은?

ResultSet은 쿼리 결과를 보관합니다. 생성 플래그에 따라 순방향 전용, 스크롤 가능, 업데이트 가능할 수 있습니다.

11) JDBC와 ODBC 비교.

12) JDBC 아키텍처 구성 요소는?

  1. JDBC API (Connection, Statement, ResultSet).
  2. 드라이버 매니저 (드라이버 등록).
  3. 드라이버 구현체 (유형 1-4).
  4. 데이터베이스 백엔드.

13) ResultSetMetaData와 DatabaseMetaData 차이점.

14) Savepoints 사용법.

conn.setAutoCommit(false);
Savepoint sp = conn.setSavepoint("sp1");
// 연산들
conn.rollback(sp); // 부분 롤백
conn.commit();

15) RowSet과 변형 정의.

16) JDBC가 SQL 예외를 어떻게 처리하나요?

SQLException은 getErrorCode(), getSQLState(), getMessage() 제공. 실패 시 항상 로깅하고 롤백.

17) 배치 처리란?

여러 DML 문을 단일 라운드트립으로 그룹화; addBatch()와 executeBatch() 사용.

18) 문 유형 다시 나열.

19) 효율적인 커넥션 관리.

커넥션 풀링이 된 DataSource 선호. 자동 정리를 위해 try-with-resources 사용.

20) JDBC Statement vs Hibernate Session.

21) 자동 생성 키 조회.

PreparedStatement ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ps.executeUpdate();
ResultSet rs = ps.getGeneratedKeys();

22) BLOB과 CLOB 처리.

23) ResultSet을 스크롤 가능/업데이트 가능하게 만들기.

Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery("SELECT * FROM EMPLOYEE");
rs.absolute(3);
rs.updateString("name", "UpdatedName");
rs.updateRow();

24) DataSource vs DriverManager.

25) PreparedStatement로 배치 처리.

for(int i=1;i<=5;i++){
    ps.setInt(1,i);
    ps.setString(2,"Student"+i);
    ps.addBatch();
}
ps.executeBatch();

26) DatabaseMetaData 사용.

DatabaseMetaData dbmd = conn.getMetaData();
System.out.println("DB: " + dbmd.getDatabaseProductName());

27) execute 변형 요약.

28) JDBC 리소스 종료.

try (Connection c = ds.getConnection();
     Statement s = c.createStatement();
     ResultSet rs = s.executeQuery("SELECT * FROM EMPLOYEE")) {
    while(rs.next()){ /* 처리 */ }
}

29) 일반적인 성능 최적화.

30) 저장 프로시저 호출.

CallableStatement cs = conn.prepareCall("{call getEmployeeSalary(?)}");
cs.setInt(1,101);
ResultSet rs = cs.executeQuery();

31) JDBC 커넥션 풀링 내부 동작.

초기화 시 풀이 고정된 커넥션 세트 생성. 요청 시 커넥션 대여; 사용 후 반환하여 리소스를 메모리에 유지.

32) HikariCP 구성.

HikariConfig cfg = new HikariConfig();
cfg.setJdbcUrl("jdbc:mysql://localhost:3306/testdb");
cfg.setUsername("root");
cfg.setPassword("pw");
cfg.setMaximumPoolSize(10);
HikariDataSource ds = new HikariDataSource(cfg);

33) DriverManager vs DataSource.

34) "No suitable driver found" 일반적인 원인.

35) SQL 인젝션 방지.

36) JDBC vs ORM (Hibernate).

37) SQL 쿼리 로깅.

38) JDBC로 안전한 멀티스레딩.

39) Spring / Spring Boot에서의 JDBC.

Spring의 JdbcTemplate이 보일러플레이트, 예외 변환, 커넥션 풀링을 자동 처리.

40) JDBC 커넥션 상태.

41) 드라이버 유형 요약.

42) 트랜잭션 격리 수준.

43) 분산 (XA) 트랜잭션.

44) JDBC 성능 프로파일링.

45) JDBC 메모리 누수 방지.

46) 마이크로서비스/클라우드에서의 JDBC.

47) 커넥션 실패 우아하게 처리.

for(int i=0;i<3;i++){
    try(Connection c=ds.getConnection()){
        break;
    } catch(SQLTransientConnectionException e){
        Thread.sleep(1000*(i+1));
    }
}

48) 커밋, 롤백, 세이브포인트 차이.

49) JDBC 메타데이터 유용성.

50) 엔터프라이즈 JDBC 모범 사례.

  1. 풀링된 DataSource 사용.
  2. PreparedStatement 선호.
  3. 적절한 격리 수준으로 트랜잭션 처리.
  4. 배치 연산과 페이지네이션.
  5. 쿼리 로깅 및 모니터링.
  6. 예외 및 재시도 우아하게 처리.

🔍 실전 시나리오와 전략적 답변이 포함된 주요 JDBC 면접 질문

아래는 면접관이 기대하는 내용과 강력한 예시 답변이 포함된 10가지 신중하게 작성된 JDBC 면접 질문입니다.

1) JDBC란 무엇이며 왜 중요한가요?

예상 답변: JDBC는 데이터베이스 접근을 위한 Java API이며, SQL 실행, 결과 처리, 트랜잭션을 추상화하여 데이터베이스 독립적 코드를 가능하게 합니다.

2) JDBC 드라이버 유형 설명.

예상 답변: 네 가지 유형: JDBC-ODBC 브리지, 네이티브 API, 네트워크 프로토콜, 씬 드라이버. 오늘날 유형 4가 가장 일반적.

3) 커넥션을 효율적으로 관리하는 방법?

예상 답변: HikariCP 같은 커넥션 풀 사용; 요청마다 커넥션 열고 닫기 지양.

4) Statement, PreparedStatement, CallableStatement 구분.

예상 답변: Statement – 정적 SQL; PreparedStatement – 매개변수화, 인젝션 방지; CallableStatement – 저장 프로시저.

5) 수행한 JDBC 성능 최적화 사례 설명.

예상 답변: 문자열 연결을 PreparedStatement로 교체, 풀링 도입, 배치 삽입 사용; 응답 시간 40% 단축.

6) SQL 인젝션 방지 방법?

예상 답변: PreparedStatement 사용; 입력 검증; DB 권한 제한.

7) JDBC 커넥션 실패 해결.

예상 답변: URL, 자격 증명, 네트워크, 드라이버 JAR 확인; 로그 검토; 잘못 구성된 포트 수정.

8) JDBC에서 트랜잭션 관리.

예상 답변: 자동 커밋 비활성화, 연산 수행, 결과에 따라 커밋 또는 롤백; ACID 준수 보장.

9) JDBC로 해결한 까다로운 DB 이슈.

예상 답변: 대량 삽입에 배치 처리 구현, 시간을 분 단위에서 초 단위로 단축.

10) 빡빡한 마감일 하에서 JDBC 개선 사항 우선순위 지정.

예상 답변: 영향도 평가, 명확한 소통, 고영향 항목 우선 처리, 협업을 통한 SLA 준수.

java

  1. Java Character 래퍼 클래스: Char 객체 마스터하기
  2. Java switch 문 마스터하기: 문법, 사용법, 모범 사례
  3. Java 8 개요: 새로운 함수형, 스트리밍, 날짜-시간 API
  4. Java 애너테이션 타입 종합 가이드: 사전정의, 커스텀, 메타 애너테이션
  5. Java 9 향상된 Try-with-resources: 더 깔끔한 코드
  6. Java 입출력 마스터: 출력, 입력, 포맷팅 완벽 가이드
  7. Java vs C#: 10가지 핵심 차이점 완벽 분석
  8. Java 8 함수형 인터페이스 마스터하기: 종합 가이드
  9. Java LinkedHashMap 마스터: 생성, 연산, 성능 비교
  10. Java PriorityQueue 완벽 가이드: 기초, 연산, 커스텀 정렬