spring4에서 oracle 데이터 소스를 구성하려면 어떤 드라이버가 필요합니까?
어떤 지속성 기술을 사용하든 데이터 소스를 정의해야 합니다. Spring은 Spring 자체 데이터 소스(DriverManagerDataSource), DBCP 데이터 소스, C3P0 데이터 소스, JNDI 데이터 소스 등 4가지 형태의 데이터 소스 구성 방법을 제공합니다.
1. Spring 자체 데이터 소스
DriverManagerDataSource
XML 코드:
[html] 일반 복사본 보기
lt;bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"gt;
lt;property name="driverClassName" value= "oracle .jdbc.driver.OracleDriver" /gt;
lt;property name="url" value="jdbc:oracle:thin:@172.19.34.6:1521:ORCL" /gt;
p>lt;property name="username" value="orclight" /gt;
lt;property name="password" value="123456" /gt;
lt;/beangt;
2. DBCP 데이터 소스
DBCP 구성은 2개의 jar 패키지 commons-dbcp.jar 및 commons-pool.jar에 따라 다릅니다.
XML 코드:
[html] 일반 사본 보기
lt; bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource "
destroy-method="close"gt;
lt;property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /gt;
lt;property name="url" value="jdbc:oracle:thin:@172.19.34.6:1521:ORCL" /gt;
lt;property name="username" value=" orclight" /gt;
lt;property name="password" value="123456" /gt;
lt;/beangt;
위 코드 설명:
BasicDataSource는 데이터 소스를 닫는 close() 메소드를 제공하므로 Spring 컨테이너가 닫힐 때 데이터 소스가 정상적으로 닫힐 수 있도록 destroy-method="close" 속성을 설정해야 합니다. .
위의 필수 데이터 소스 속성 외에도 일반적으로 사용되는 속성도 있습니다.
defaultAutoCommit: 데이터 소스에서 반환된 연결이 자동 제출 메커니즘을 사용하는지 여부를 설정합니다. 기본값은 true입니다. p>
defaultReadOnly: 데이터 소스가 읽기 전용 작업만 수행할 수 있는지 여부를 설정합니다. 기본값은 false입니다.
maxActive: 0으로 설정하면 최대 데이터베이스 연결 수가 있음을 의미합니다.
maxIdle: 최대 대기 연결 수입니다. 0으로 설정하면 제한이 없음을 의미합니다.
maxWait: 최대 대기 시간(초)입니다. 시간을 초과하면 오류 메시지가 보고됩니다.
validationQuery: 연결 성공 여부를 확인하는 데 사용되는 쿼리 SQL 문입니다. 예를 들어, SQL 문은 다음과 같습니다. 간단히 다음과 같이 설정할 수 있습니다: "사용자로부터 개수(*) 선택";
removeAbandoned: 자체 중단 여부, 기본값은 false입니다.
removeAbandonedTimeout: 데이터 연결은 몇 초 후에 자동으로 연결이 끊어집니다. RemoveAbandoned가 true인 경우 이 값을 제공하세요.
logAbandoned: 중단 이벤트를 기록할지 여부, 기본값은 false입니다.
3.C3P0 데이터 소스
C3P0은 오픈 소스 JDBC 데이터 소스 구현 프로젝트로 jar 패키지 c3p0.jar에 의존합니다.
XML 코드:
[html] 일반 사본 보기
lt; bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource "
destroy-method="close"gt;
lt;property name="driverClass" value=" oracle.jdbc.driver.OracleDriver "/gt;
lt;property name="jdbcUrl" value="jdbc:oracle:thin:@172.19.34.6:1521:ORCL"/gt;
lt;property name="user" value=" orclight"/gt;
lt;property name="password" value="123456"/gt;
lt;/beangt;
ComboPooledDataSource 및 BasicDataSource 또한 데이터 소스를 닫는 close() 메서드를 제공하므로 Spring 컨테이너가 닫힐 때 데이터 소스가 성공적으로 해제될 수 있습니다.
C3P0은 DBCP보다 더 풍부한 구성 속성을 가지고 있으며 이러한 속성을 통해 데이터 소스에 대해 다양한 효과적인 제어를 수행할 수 있습니다.
acquireIncrement: 연결 풀의 연결이 모두 사용된 경우. , 한 번에 C3P0에 의해 생성된 새 연결 수
acquireRetryAttempts: 데이터베이스에서 새 연결을 얻지 못한 후 새 연결을 얻으려는 반복 시도 횟수를 정의합니다. 기본값은 30입니다. /p>
acquireRetryDelay: 두 개의 연결 중간 간격(밀리초), 기본값은 1000입니다.
autoCommitOnClose: 기본적으로 연결이 닫힐 때 커밋되지 않은 모든 작업이 롤백됩니다.
기본값은 false입니다.
automaticTestTable: C3P0은 Test라는 빈 테이블을 생성하고 테스트를 위해 자체 쿼리 문을 사용합니다. 이 매개변수가 정의되면 PreferredTestQuery 속성이 무시됩니다. 이 테스트 테이블에서는 어떤 작업도 수행할 수 없습니다. C3P0 테스트에 사용되며 기본값은 null입니다.
breakAfterAcquireFailure: 연결 획득에 실패하면 연결 획득을 기다리는 모든 스레드가 예외를 발생시킵니다. 그러나 데이터 소스는 여전히 유효하며 다음에 getConnection()이 호출될 때 계속해서 연결을 얻으려고 시도합니다. true로 설정하면 연결을 얻으려는 시도가 실패한 후 데이터 소스가 연결 해제되고 영구적으로 닫히는 것으로 선언됩니다. 기본값은 false입니다.
checkoutTimeout: 연결 풀이 모두 사용되면 클라이언트는 시간 초과 후 SQLException이 발생합니다. 0, 무한정 대기합니다. 단위는 밀리초이고 기본값은 0입니다.
connectionTesterClassName: ConnectionTester 또는 QueryConnectionTester를 구현하는 클래스를 구현하여 연결을 테스트합니다. 클래스 이름은 정규화된 이름으로 설정되어야 합니다. 기본값은 com.mchange.v2.C3P0.impl.DefaultConnectionTester입니다.
idleConnectionTestPeriod: 모든 연결 풀에서 유휴 연결을 확인하는 시간(초)입니다. 기본값은 0이며, 이는 확인하지 않음을 의미합니다.
initialPoolSize : 초기화 시 생성된 연결 수로 minPoolSize와 maxPoolSize 사이의 값이어야 합니다. 기본값은 3입니다.
maxIdleTime: 최대 유휴 시간을 초과하는 연결은 삭제됩니다. 0 또는 음수이면 절대 폐기되지 않습니다. 기본값은 0입니다.
maxPoolSize: 연결 풀에 유지되는 최대 연결 수입니다. 기본값은 15입니다.
maxStatements: 데이터 소스에 로드되는 ReadyStatements의 수를 제어하는 JDBC의 표준 매개변수입니다. 그러나 사전 캐시된 명령문은 전체 연결 풀이 아닌 단일 연결에 속하기 때문입니다. 따라서 이 매개변수를 설정할 때 많은 요소를 고려해야 합니다. maxStatements 및 maxStatementsPerConnection이 모두 0이면 캐시가 꺼집니다. 기본값은 0입니다.
maxStatementsPerConnection: 연결 풀의 단일 연결이 소유한 캐시된 문의 최대 수입니다. 기본값은 0입니다.
numHelperThreads: C3P0은 비동기적으로 작동하며 느린 JDBC 작업은 도우미 프로세스를 통해 완료됩니다. 이러한 작업을 확장하면 성능이 효과적으로 향상되고 멀티스레딩을 통해 여러 작업을 동시에 실행할 수 있습니다. 기본값은 3입니다.
preferredTestQuery: 모든 연결 테스트에서 실행되는 테스트 문을 정의합니다. 이 매개변수는 연결 테스트를 사용할 때 테스트 속도를 크게 향상시킬 수 있습니다. 테스트 테이블은 초기 데이터 소스에 존재해야 합니다. 기본값은 null입니다.
propertyCycle: 시스템 구성 매개변수를 수정하기 전에 사용자가 기다리는 최대 시간(초)입니다. 기본값은 300입니다.
testConnectionOnCheckout: 성능 소모가 높으므로 필요할 때만 사용하세요. true로 설정하면 제출 시 각 연결의 유효성이 확인됩니다.
연결 테스트 성능을 향상시키려면dleConnectionTestPeriod 또는 automaticTestTable
과 같은 방법을 사용하는 것이 좋습니다. 기본값은 false입니다.
testConnectionOnCheckin: true로 설정하면 연결을 얻는 동안 연결의 유효성이 확인됩니다. 기본값은 거짓입니다.
4.JNDI 데이터 소스
애플리케이션이 고성능 애플리케이션 서버(예: WebLogic 또는 Websphere, Tomcat 등)에 구성된 경우 다음을 사용하는 것이 더 나을 수 있습니다. 애플리케이션 서버 자체 소스에서 제공하는 데이터입니다. 애플리케이션 서버의 데이터 소스는 JNDI를 사용하는 호출자에게 공개됩니다. Spring은 특히 JNDI 자원을 참조하는 JndiObjectFactoryBean 클래스를 제공합니다.
xml 코드:
[html] 일반 사본 보기
lt; bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"gt; ;
lt;속성 이름="jndiName" value="java:comp/env/jdbc/orclight"/gt;
lt;/beangt;
[html] 일반 사본 보기
lt;beans xmlns=p/env/jdbc/orclight"/gt;
lt;/beansgt;