6장. JDBC 데이터 소스 사용
다음 주제에서는 Fuse OSGi 런타임의 JDBC 데이터 소스 사용에 대해 설명합니다.
6.1. 연결 인터페이스 정보
데이터 조작을 수행하는 데 사용되는 가장 중요한 오브젝트 는 java.sql.Connection
인터페이스 구현입니다. Fuse 구성 관점에서 Connection
개체를 가져오는 방법을 알아야 합니다.
관련 오브젝트가 포함된 라이브러리는 다음과 같습니다.
-
PostgreSQL:
mvn:org.postgresql/postgresql/42.2.5
-
MySQL:
mvn:mysql/mysql-connector-java/5.1.34
기존 구현( 드라이버 JAR에 포함)은다음을 제공합니다.
-
PostgreSQL:
org.postgresql.jdbc.PgConnection
-
MySQL:
com.mysql.jdbc.JDBC4Connection
(com.mysql.jdbc.Driver
의 다양한connect*()
메서드 참조)
이러한 구현에는 DML, DDL 및 간단한 트랜잭션 관리를 수행하는 데이터베이스별 논리가 포함됩니다.
이론적으로는 이러한 연결 오브젝트를 수동으로 생성할 수 있지만 더 깔끔한 API를 제공하기 위해 세부 정보를 숨기는 두 가지 JDBC 방법이 있습니다.
-
java.sql.Driver.connect()
- 이 방법은 오래 전에 독립 실행형 애플리케이션에서 사용되었습니다. -
javax.sql.DataSource.getConnection()
- 팩토리 패턴을 사용하는 데 권장되는 방법입니다. 유사한 방법은 JMS 연결 팩토리에서 JMS 연결을 가져오는 데 사용됩니다.
드라이버 관리자 접근 방식은 여기에서 논의되지 않습니다. 이 메서드는 지정된 연결 개체에 대한 일반 생성자보다 작은 계층 임을 명시하는 것으로 충분합니다.
데이터베이스별 통신 프로토콜을 효과적으로 구현하는 java.sql.Connection
외에도 다른 두 가지 특수 연결 인터페이스가 있습니다.
-
javax.sql.PooledConnection
은 물리적 연결을 나타냅니다. 코드가 이 풀링된 연결과 직접 상호 작용하지 않습니다. 대신getConnection()
메서드에서 얻은 연결이 사용됩니다. 이 방법을 사용하면 애플리케이션 서버 수준에서 연결 풀을 관리할 수 있습니다.getConnection()
을 사용하여 얻은 연결은 일반적으로 프록시입니다. 이러한 프록시 연결이 닫히면 물리적 연결이 닫히지 않고 관리되는 연결 풀에서 다시 사용할 수 있게 됩니다. -
javax.sql.XAConnection
을 사용하면javax. Cryostat.
개체를 가져올 수 있습니다.TransactionManager와 함께 사용하기 위해 XA 인식 연결과 연결된 javax. Cryostat.xa.
XAResourcejavax.sql.XAConnection
은javax.sql.PooledConnection을 확장하므로 일반적인 DML/DQL 메서드를 사용하여 JDBC 연결 오브젝트에 대한 액세스를 제공하는 'getConnection() 메서드도 제공합니다
.