sitelink1  
sitelink2  
sitelink3  
sitelink4  
sitelink5  
sitelink6  

JDBC API에서 java.sqljavax.sql 패키지의 차이점

JDBC(Java Database Connectivity) API는 Java 애플리케이션과 데이터베이스 간의 상호 작용을 가능하게 하는 표준 인터페이스입니다.

JDBC API는 java.sqljavax.sql 두 개의 주요 패키지로 구성됩니다.


1. java.sql 패키지

  • 핵심 JDBC 기능을 제공하는 기본 패키지
  • JDBC 1.0부터 존재하며, 기본적인 데이터베이스 연결 및 SQL 실행을 담당

✅ 주요 클래스 및 인터페이스

  • DriverManager → 데이터베이스 연결 관리
  • Connection → 데이터베이스 연결
  • Statement → SQL 실행을 위한 기본 인터페이스
  • PreparedStatement → SQL 실행을 위한 사전 컴파일된 인터페이스
  • CallableStatement → 저장 프로시저 호출을 위한 인터페이스
  • ResultSet → SQL 쿼리 결과를 처리하는 객체
  • SQLException → 데이터베이스 작업 중 발생하는 예외

✅ 주요 특징

  • 기본적인 데이터베이스 연결 및 SQL 실행 기능 제공
  • JDBC 1.0, 2.0에서 사용되었으며, 이후에도 계속 유지
  • Connection 객체를 직접 생성하고 관리해야 하며, 커넥션 풀링 기능이 없음

2. javax.sql 패키지

  • 고급 JDBC 기능을 제공하는 확장 패키지
  • JDBC 2.0에서 추가되었으며, 데이터소스, 커넥션 풀링, 트랜잭션 관리, RowSet 등의 기능 지원

✅ 주요 클래스 및 인터페이스

  • DataSource → 데이터베이스 연결을 관리하는 고급 인터페이스 (커넥션 풀 사용 가능)
  • ConnectionPoolDataSource커넥션 풀링을 지원하는 데이터 소스
  • PooledConnection커넥션 풀을 위한 인터페이스
  • RowSetResultSet의 확장 버전으로, 데이터베이스 연결 없이도 사용 가능
  • XADataSource분산 트랜잭션을 지원하는 데이터 소스
  • XAConnection2PC(Two-Phase Commit) 트랜잭션을 지원하는 커넥션

✅ 주요 특징

  • DataSource 기반의 데이터베이스 연결을 제공DriverManager보다 유지보수 및 확장성이 뛰어남
  • 커넥션 풀링(Connection Pooling) 지원 → 성능 향상
  • 트랜잭션 관리 기능 지원 (XADataSource 사용)
  • RowSet API 지원 → 오프라인에서도 데이터를 조작할 수 있음

???? java.sql vs javax.sql 비교 정리

비교 항목 java.sql javax.sql
JDBC 버전 JDBC 1.0 (기본) JDBC 2.0 이상 (확장)
주요 기능 기본적인 데이터베이스 연결 및 SQL 실행 고급 데이터베이스 기능 (커넥션 풀, 트랜잭션 관리, RowSet 지원 등)
연결 방식 DriverManager.getConnection(url, user, password) 사용 DataSource를 통한 연결 (더 유연함)
커넥션 풀링 ❌ 미지원 ✅ 지원 (ConnectionPoolDataSource)
트랜잭션 관리 단일 데이터베이스 트랜잭션만 지원 ✅ 분산 트랜잭션 (XADataSource)
사용 대상 일반적인 데이터베이스 액세스 엔터프라이즈 애플리케이션 (고성능, 고가용성 필요)

✅ 결론

  • 일반적인 JDBC 사용java.sql 패키지만으로 충분
  • 고성능 & 대규모 애플리케이션javax.sqlDataSource, Connection Pooling, XADataSource 활용 필수

 

따라서, 엔터프라이즈급 애플리케이션을 개발할 때는 javax.sql을 적극 활용하는 것이 좋습니다. ????