DriverManagerDataSource
getConnection() call에 대해 새로운 connection을 리턴한다.
실제 운영 환경에서 이 JDBCDataSource의 사용은 추천하지 않는다.
이 환경에서는 DBCPDataSource
나,
C3P0DataSource
가 사용된다.
| url | DataBase에 access하기 위한 JDBC URL | ||
| driverClassName | JDBC driver class name을 설정한다. | ||
| username | DataBase에 access하기 위해 사용된다. | ||
| password | DataBase에 access하기 위해 사용된다. |
<bean id="dataSource-jdbc"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="org.hsqldb.jdbcDriver" />
<property name="url"
value="jdbc:hsqldb:file:/./db/sampledb" />
<property name="username" value="sa" />
</bean>
| driverClassName | jdbc driver의 class name을 설정한다. | ||
| url | DataBase url을 설정한다. | ||
| username | DataBase에 접근시 사용할 username을 설정한다. | ||
| password | DataBase에 접근시 사용할 password를 설정한다. | ||
| maxActive | 동시에 할당할 수 있는 active connection의 최대 갯수를 설정한다. | ||
| maxIdle | pool에 남겨놓을 수 있는 idle connection의 최대 갯수를 설정한다. | ||
| maxWait | 모든 Connection이 사용중일 경우 최대 대기 시간을 설정한다. | ||
| defaultAutoCommit | 이 datasource로부터 리턴된 connection에 대한 auto-commit 여부를 설정한다. | ||
| defaultReadOnly | Connection Pool에 의해 생성된 Connection에 read-only 속성을 부여한다. | ||
| defaultTransactionIsolation | 리턴된 connection에 대한 transaction isolation 속성을 부여한다. | ||
| defaultCatalog | Connection의 catalog를 설정한다. | ||
| minIdle | Connection pool의 최소한 idle connection 갯수를 설정한다. | ||
| initialSize | Connection pool에 생성될 초기 connection size를 설정한다. | ||
| testOnBorrow | Connection pool에서 객체를 가지고 오기 전에 그 객체의 유효성을 확인할 것인지 결정한다. true값은 아무 영향을 미치지 않지만 validationQuery property는 non-null string으로 설정되어야 한다. | ||
| testOnReturn | 객체를 return하기 전에 객체의 유효성을 확인할 것인지 결정한다. true값은 아무 영향을 미치지 않지만 validationQuery property는 non-null string으로 설정되어야 한다. | ||
| testWhileIdle | idle object evictor가 connection의 유효성을 확인할 것인지를 설정한다. true값은 아무 영향을 미치지 않지만 validationQuery property는 non-null string으로 설정되어야 한다. | ||
| validationQuery | validationQuery를 설정한다. | ||
| loginTimeout | Database에 연결하기 위한 login timeout(in seconds)을 설정한다. createDataSource()를 호출 해서 connection pool을 초기화한다. |
<bean id="dataSource-dbcp"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
<property name="url" value="jdbc:hsqldb:file:/./db/sampledb"/>
<property name="username" value="sa"/>
<property name="maxActive" value="100"/>
<property name="maxIdle" value="30"/>
<property name="maxWait" value="1000"/>
<property name="defaultAutoCommit" value="true"/>
<property name="removeAbandoned" value="true"/>
<property name="removeAbandonedTimeout" value="60"/>
<property name="logAbandoned" value="true"/>
</bean>
<bean id="dataSource-c3p0"
class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="org.hsqldb.jdbcDriver"/>
<property name="jdbcUrl" value="jdbc:hsqldb:file:/./db/sampledb"/>
<property name="user" value="sa"/>
<property name="minPoolSize" value="5"/>
<property name="acquireIncrement" value="5"/>
<property name="maxPoolSize" value="15"/>
</bean>
JndiObjectFactoryBean
JndiObjectTargetSource를 사용할 수 있다.
실제 JNDI object type이 미리 정의되어 있지 않은 경우 proxyInterface의 정의가 필요하다.
| jndiTemplate | JNDI 검색을 위해 JNDI 템플릿을 설정한다. 또한 "jndiEnvironment"로 JNDI 환경 설정을 할 수 있다. | ||
| jndiEnvironment | JNDI를 검색하기 위해 JNDI 환경을 설정한다. 환경 설정에 제공된 JndiTemplate을 생성한다. | ||
| resourceRef | J2EE 컨테이너에서 검색할 수 있는지 설정한다. 만약 prefix가 "java:comp/env/"이면 JNDI 이름이 포함되어 있지 않으므로 추가해 주어야 한다. 디폴트 값은 "false"이다. 주의 : 만약 "java:" 와 같이 주어진 scheme이 아니라면 적용할 수 없다. | ||
| expectedType | JNDI 객체의 타입을 지정한다. | ||
| jndiName | 검색을 위해 JNDI 이름을 설정한다. 만약 resourceRef가 true로 설정되어 있고, "java:comp/env/"로 시작되지 않으면 이 prefix를 추가한다. | ||
| proxyInterface | JNDI 객체를 사용하기 위해 proxy 인터페이스를 설정한다. 일반적으로 lookupOnStartup=false와 cache=false와 함께 쓰인다. lazy lookup인 경우 실제 JNDI 객체 타입을 미리 알 수 없기 때문에 이러한 설정이 필요하다. | ||
| lookupOnStartup | starup시에 JNDI object를 검색할 지 여부를 설정한다. lazy lookup시에는 proxy interface 정의가 필요하다. | ||
| cache | JNDI 객체를 캐싱할 것인지 설정한다. | ||
| defaultObject | JNDI lookup에 실패하였을 경우 전달할 default object를 지정한다. 이것은 임의의 bean reference나 literal value가 될 수 있다. 주의 : 이것은 startup시 lookup에서만 지원된다. |
<bean class="org.springframework.jndi.JndiObjectFactoryBean" id="dataSource">
<property name="jndiName" value="AnyframeDS"/>
<property name="jndiTemplate" ref="jnditemplate"/>
</bean>
<bean class="org.springframework.jndi.JndiTemplate" id="jnditemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">
weblogic.jndi.WLInitialContextFactory
</prop>
<prop key="java.naming.provider.url">
t3://server.ip:7001
</prop>
</props>
</property>
</bean>
/**
* 각각의 DataSourceService를 통해 Connection 객체를 구하는 테스트
*/
public void testGetConnection(String beanId)throws Exception {
// 1. 각각의 beanId(dataSource-dbcp, dataSource-c3p0, dataSource-jdbc)에 대한
// DataSource 객체를 생성한다.
DataSource datasource = (DataSource) context.getBean(beanId);
// 2. 생성된 DataSource로 부터 connection을 얻는다.
Connection conn = datasource.getConnection();
if (conn==null)
throw new Exception("fail to get Connection.");
}