Spring 에서 데이터 원본 을 설정 하 는 세 가지 방식
13137 단어 springdateasource
1,org.springframework.jdbc.datasource.DriverManager DataSource 사용
설명:DriverManager DataSource 가 연결 을 만 드 는 것 은 연결 만 있 으 면 connection 을 새로 만 드 는 것 으로 연결 풀 의 역할 이 전혀 없습니다.
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>${jdbc.driverClassName}</value>
</property>
<property name="url">
<value>${jdbc.url}</value>
</property>
<property name="username">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
</bean>
2.org.apache.comons.dbcp.BasicDataSource 사용
설명:이것 은 추천 설명 하 는 데이터 소스 설정 방식 으로 연결 탱크 기술 을 진정 으로 사용 했다.
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@localhost:1521:orcl</value>
</property>
<property name="username">
<value>test</value>
</property>
<property name="password">
<value>test</value>
</property>
<property name="maxActive">
<value>255</value>
</property>
<property name="maxIdle">
<value>2</value>
</property>
<property name="maxWait">
<value>120000</value>
</property>
</bean>
3.org.springframework.jndi.JndiObjectFactory Bean 사용 하기
설명:JndiObject Factory Bean 은 JNDI 를 통 해 DataSource 를 얻 을 수 있 습 니 다.
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/roseindiaDB_local</value>
</property>
</bean>
요약:3 가지 방식 중 첫 번 째 는 연결 탱크 를 사용 하지 않 았 기 때문에 프로젝트 에 사용 하지 않 습 니 다.세 번 째 방식 은 웹 server 에서 데이터 원본 을 설정 해 야 합 니 다.배치 하기에 불편 합 니 다.저 는 두 가지 방식 으로 데이터 원본 을 설정 하 는 것 을 추천 합 니 다.
데이터 원본 설정
Spring 은 제3자 의존 패키지 에 두 개의 데이터 원본 을 포함 하 는데 하 나 는 Apache 의 DBCP 이 고 다른 하 나 는 C3P 0 이다.Spring 설정 파일 에서 이 두 가지 설정 데이터 원본 을 사용 할 수 있 습 니 다.
DBCP 데이터 원본
DBCP 패 키 지 는
xml 코드
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3309/sampledb" />
<property name="username" value="root" />
<property name="password" value="1234" />
</bean>
Basic DataSource 는 close()방법 으로 데이터 원본 을 닫 기 때문에 destroy-method="close"속성 을 설정 하여 Spring 용기 가 닫 혔 을 때 데이터 원본 이 정상적으로 닫 힐 수 있 도록 해 야 합 니 다.상기 필수 데이터 원본 속성 을 제외 하고 자주 사용 하 는 속성 도 있 습 니 다.
default AutoCommit:데이터 원본 에서 돌아 오 는 연결 이 자동 제출 체 제 를 사용 하 는 지 설정 합 니 다.기본 값 은 true 입 니 다.
defaultReadOnly:데이터 원본 이 읽 기 전용 작업 만 수행 할 수 있 는 지 설정 합 니 다.기본 값 은 false 입 니 다.
max Active:최대 연결 데이터베이스 연결 수 를 0 으로 설정 하면 제한 이 없 음 을 표시 합 니 다.
maxIdle:최대 연결 대기 수량 을 0 으로 설정 하면 제한 이 없 음 을 표시 합 니 다.
maxWait:최대 대기 초 수,단 위 는 밀리초 이 며 시간 을 초과 하면 오류 가 발생 합 니 다.
vaidationQuery:연결 이 성 공 했 는 지 확인 하 는 데 사용 되 는 SQL 문 구 는 최소한 한 줄 의 데 이 터 를 되 돌려 야 합 니 다.예 를 들 어"select count(*)from user"로 간단하게 설정 할 수 있 습 니 다.
removeAbandoned:자기 중단 여 부 는 기본적으로 false 입 니 다.
removeAbandoned Timeout:몇 초 후에 데이터 연결 이 자동 으로 끊 어 집 니 다.removeAbandoned 에서 true 로 이 값 을 제공 합 니 다.
logAbandoned:인 터 럽 트 이 벤트 를 기록 할 지 여부 입 니 다.기본 값 은 false 입 니 다.
C3P 0 데이터 원본
C3P 0 은 오픈 소스 코드 의 JDBC 데이터 원본 구현 프로젝트 로 lib 디 렉 터 리 에서 Hibernate 와 함께 발표 되 어 JDBC 3 와 JDBC 2 확장 규범 설명 을 실현 하 는 Connection 과 Statement 풀 을 실현 합 니 다.C3P0 클래스 패 키 지 는
xml 코드
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value=" oracle.jdbc.driver.OracleDriver " />
<property name="jdbcUrl" value=" jdbc:oracle:thin:@localhost:1521:ora9i " />
<property name="user" value="admin" />
<property name="password" value="1234" />
</bean>
ComboPooledDataSource 는 Basic DataSource 와 마찬가지 로 데이터 원본 을 닫 는 close()방법 을 제공 하여 Spring 용기 가 닫 혔 을 때 데이터 원본 이 성공 적 으로 방출 될 수 있 도록 보장 합 니 다.
C3P 0 은 DBCP 보다 더 풍부 한 설정 속성 을 가지 고 있 습 니 다.이러한 속성 을 통 해 데이터 원본 을 효과적으로 제어 할 수 있 습 니 다.
acquire Increment:연결 탱크 의 연결 이 다 되 었 을 때 C3P 0 은 한꺼번에 새로운 연결 의 수 를 만 듭 니 다.
acquireRetryAttempts:데이터베이스 에서 새 연결 을 가 져 오 는 데 실패 한 후 반복 적 으로 가 져 오 는 횟수 를 정의 합 니 다.기본 값 은 30 입 니 다.
acquireRetryDelay:두 번 의 연결 중간 간격,단위 밀리초,기본 값 은 1000 입 니 다.
autoCommitOnClose:연결 이 닫 혔 을 때 제출 하지 않 은 모든 작업 을 스크롤 백 합 니 다.기본 값 은 false;
automatic TestTable:C3P 0 은 Test 라 는 빈 표를 만 들 고 자체 검색 어 를 사용 하여 테스트 합 니 다.이 매개 변 수 를 정의 하면 속성 preferred TestQuery 는 무 시 됩 니 다.이 Test 표 에서 어떠한 조작 도 할 수 없습니다.C3P 0 테스트 에 사 용 될 것 입 니 다.기본 값 은 null 입 니 다.
breakAfterAcquireFailure:연결 을 가 져 오 는 데 실패 하면 연결 을 가 져 오 기 를 기다 리 는 모든 스 레 드 에 이상 이 발생 합 니 다.그러나 데이터 원본 은 유효 하 게 보존 되 어 있 으 며 다음 에 조정 합 니 다. getConnection()을 사용 할 때 연결 을 계속 시도 합 니 다.트 루 로 설정 하면 연결 을 가 져 오 는 데 실 패 했 을 때 이 데이터 원본 은 끊 겼 음 을 밝 히 고 영구적 으로 닫 힙 니 다.기본 값 은 false;
checkoutTimeout:연결 풀 이 다 떨 어 졌 을 때 클 라 이언 트 가 getConnection()을 호출 한 후에 새로운 연결 을 가 져 오 는 시간 을 기다 리 고 시간 이 초과 되면 SQLException 을 던 집 니 다.0 으로 설정 하면 무기한 대기 합 니 다.단위 밀리초,기본 값 0;
connectionTesterClassName:connectionTester 나 Query ConnectionTester 를 실현 하 는 클래스 를 통 해 연결 을 테스트 합 니 다.클래스 이름 은 전체 제한 이름 으로 설정 해 야 합 니 다.기본 값 은 com.mchange.v2.2C3P0.impl.DefaultConnectionTester 입 니 다.
idleConnectionTestPeriod:모든 연결 풀 의 남 은 연결 을 몇 초 간격 으로 검사 합 니까?기본 값 은 0 입 니 다.검사 하지 않 음 을 표시 합 니 다.
initial PoolSize:초기 화 할 때 만 든 연결 수 는 minPoolSize 와 max PoolSize 사이 에서 값 을 추출 해 야 합 니 다.기본 값 은 3;
max IdleTime:최대 남 은 시간,남 은 시간 을 초과 한 연결 은 버 려 집 니 다.0 이나 마이너스 라면 영원히 버 리 지 않 는 다.기본 값 0;
max PoolSize:연결 탱크 에 남아 있 는 최대 연결 수 입 니 다.기본 값 15;
max Statements:JDBC 의 표준 매개 변 수 는 데이터 원본 에 불 러 오 는 Prepared Statement 수량 을 제어 합 니 다.그러나 캐 시 된 Statement 은 전체 연결 탱크 가 아 닌 하나의 Connection 에 속 하기 때 문 입 니 다.따라서 이 매개 변 수 를 설정 하려 면 여러 가지 요 소 를 고려 해 야 합 니 다.만약 에 max Statements 와 max Statements PerConnection 이 모두 0 이면 캐 시가 닫 힙 니 다.기본 값 0;
max StatementsPerConnection:연결 탱크 내 단일 연결 에 있 는 최대 캐 시 Statement 수 입 니 다.기본 값 0;
numHelperThreads:C3P 0 은 비동기 적 으로 작 동 되 며 느 린 JDBC 작업 은 도움말 프로 세 스 를 통 해 이 루어 집 니 다.이 작업 들 을 확장 하면 성능 을 효과적으로 향상 시 킬 수 있 고 다 중 스 레 드 를 통 해 여러 작업 을 동시에 수행 할 수 있 습 니 다.기본 값 은 3;
preferredTestQuery:모든 연결 테스트 가 실 행 된 테스트 문 구 를 정의 합 니 다.연결 테스트 를 사용 하 는 상황 에서 이 매개 변 수 는 테스트 속 도 를 현저히 높 일 수 있다.테스트 표 는 초기 데이터 원본 에 있어 야 합 니 다.기본 값 은 null 입 니 다.
property Cycle:사용자 가 시스템 설정 파 라 메 터 를 수정 하기 전에 가장 많이 기다 리 는 초 입 니 다.기본 값 300;
testconnection OnCheckout:성능 소모 가 많 기 때문에 필요 할 때 만 사용 하 십시오.true 로 설정 하면 모든 connection 이 제출 할 때 유효성 을 검증 합 니 다.idleConnectionTestPeriod 또는 automaticTestTable 사용 권장
등 방법 으로 연결 테스트 의 성능 을 향상 시킨다.기본 값 은 false;
testconnection OnCheckin:true 로 설정 하면 연결 을 받 는 동시에 연결 의 유효성 을 검사 합 니 다.기본 값 은 false 입 니 다.
프로필 을 읽 는 방식 참조 속성:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/jdbc.properties" />
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
jdbc.properties 속성 파일 에서 속성 값 을 정의 합 니 다:
jdbc.driverClassName= com.mysql.jdbc.Driver
jdbc.url= jdbc:mysql://localhost:3309/sampledb
jdbc.username=root
jdbc.password=1234
항상 개발 자가${xxx}의 앞 뒤 에 빈 칸 을 입력 하 는 것 을 알려 줍 니 다.이 빈 칸 문 자 는 변수 와 합 쳐 속성 값 으로 합 니 다.예 를 들 어
JNDI 데이터 원본 가 져 오기
고성능 애플 리 케 이 션 서버(예 를 들 어 WebLogic 이나 Websphere 등)에 설정 되 어 있 으 면 서버 자체 가 제공 하 는 데이터 원본 을 사용 하고 싶 을 수 있 습 니 다.애플 리 케 이 션 서버 의 데이터 원본 은 JNDI 오픈 호출 자 를 사용 하 며,Spring 은 이 를 위해 JNDI 자원 을 참조 하 는 JndiObject Factory Bean 클래스 를 제공 합 니 다.다음은 간단 한 설정 입 니 다:
xml 코드
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/bbt"/>
</bean>
jndiName 을 통 해 인 용 된 JNDI 데이터 원본 이름 을 지정 합 니 다.
Spring 2.0 은 J2EE 자원 을 얻 기 위해 jee 네 임 스페이스 를 제공 합 니 다.jee 네 임 스페이스 를 통 해 J2EE 자원 의 인용 을 효과적으로 간소화 할 수 있 습 니 다.다음은 JE 네 임 스페이스 를 사용 하여 JNDI 데이터 원본 을 참조 하 는 설정 입 니 다.
xml 코드
<beans xmlns=http://www.springframework.org/schema/beans
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:jee=http://www.springframework.org/schema/jee
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">
<jee:jndi-lookup id="dataSource" jndi-name=" java:comp/env/jdbc/bbt" />
</beans>
Spring 데이터 원본 구현 클래스
Spring 자체 도 간단 한 데이터 원본 구현 클래스 DriverManager DataSource 를 제공 합 니 다.org.spring from work.jdbc.datasource 패키지 에 있 습 니 다.이 종 류 는 javax.sql.dataSource 인 터 페 이 스 를 실 현 했 지만 풀 화 된 연결 체 제 를 제공 하지 않 았 습 니 다.getConnection()을 호출 하여 새로운 연결 을 가 져 올 때마다 간단하게 새로운 연결 을 만 들 었 습 니 다.따라서 이 데이터 소스 류 는 유닛 테스트 나 간단 한 독립 응용 에서 사용 하기에 적합 하 다.추가 의존 류 가 필요 하지 않 기 때문이다.
다음은 DriverManager DataSource 의 간단 한 사용 을 살 펴 보 겠 습 니 다.물론 저 희 는 설정 을 통 해 DriverManager DataSource 를 직접 사용 할 수 있 습 니 다.
자바 코드
DriverManagerDataSource ds = new DriverManagerDataSource ();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3309/sampledb");
ds.setUsername("root");
ds.setPassword("1234");
Connection actualCon = ds.getConnection();
작은 매듭
어떤 지구 화 기술 을 사용 하 든 데이터 원본 을 정의 해 야 한다.Spring 은 두 개의 데이터 소스 의 실현 패 키 지 를 추가 하여 스스로 선택 하여 정의 할 수 있 습 니 다.실제 배치 할 때 저 희 는 응용 서버 자체 가 제공 하 는 데이터 원본 을 직접 사용 할 수 있 습 니 다.이 때 JndiObject Factory Bean 이나 jee 네 임 스페이스 를 통 해 JNDI 의 데이터 원본 을 참조 할 수 있 습 니 다.
DBCP 와 C3PO 설정 의 차이 점:
C3PO :DBCP:
xml 코드
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="jdbcUrl">
<value>jdbc:oracle:thin:@10.10.10.6:1521:DataBaseName</value>
</property>
<property name="user">
<value>testAdmin</value>
</property>
<property name="password">
<value>123456</value>
</property>
</bean>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.