■ JDBC(Java Database Connectivity) 란?
* 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다.
* JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다.
■ JNDI(Java Naming and Directory Interface) 란?
* 디렉터리 서비스에서 제공하는 데이터 및 객체를 발견(discover)하고 참고(lookup)하기 위한 자바 API다.
* NDI는 일반적으로 다음의 용도로 쓰인다.
- 자바 애플리케이션을 외부 디렉터리 서비스에 연결 (예: 주소 데이터베이스 또는 LDAP 서버)
- 자바 애플릿이 호스팅 웹 컨테이너가 제공하는 구성 정보를 참고
■ DBCP(Database Connection Pool, 커넥션 풀) 란?
* 데이터베이스와 연결된 커넥션을 미리 만들어서 저장해두고 필요할 때 가져다 쓰고 반환하는 기법
[참고] pom.xml
org.mybatis
mybatis
3.4.4
org.mybatis
mybatis-spring
1.3.1
org.springframework
spring-jdbc
${org.springframework-version}
org.springframework
spring-test
${org.springframework-version}
commons-dbcp
commons-dbcp
1.4
--//
[참고] root-context.xml
<bean class="org.apache.commons.dbcp.BasicDataSource" id="dataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/javatest?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
<property name="initialSize" value="100"/>
<property name="maxActive" value="150"/>
<property name="maxWait" value="10000"/>
<property name="maxIdle" value="30"/>
<property name="minIdle" value="20"/>
<property name="testOnBorrow" value="true/">
<property name="testOnReturn" value="true"/>
<property name="validationQuery" value="select 1 from dual"/>
<property name="testWhileIdle" value="true"/>
<property name="timeBetweenEvictionRunsMillis" value="130000"/>
<property name="minEvictableIdleTimeMillis" value="120000"/>
<property name="numTestsPerEvictionRun" value="20"/>
<property name="removeAbandonedTimeout" value="30"/>
<property name="removeAbandoned" value="true"/>
<property name="logAbandoned" value="false"/>
--//
* 정의한 값
1. initialSize : 풀의 초기 커넥션 갯수
2. maxActive : 최대 커넥션 갯수
3. maxWait : 커넥션이 존재하지 않을 때, 커넥션을 얻기까지 대기하는 최대 대기시간
4. maxIdle : Idle상태에 풀이 소유한 최대 커넥션 갯수
5. testOnBorrow : 풀에서 커넥션을 가져올시 커넥션의 유효성 검사
6. testOnReturn : 풀에 커넥션을 리턴할 때 커넥션의 유효성 검사
7. validationQuery : validate Query
8. testWhileIdle : Idle상태에 커넥션의 유효성 검사
9. timeBetweenEvictionRunsMillis : 설정된 주기를 통해 Evict(유효하지 않는 커넥션/정의된 시간이 만료된 커넥션을 풀에서 제거) 쓰레드를 수행
10. minEvictableIdleTimeMiilis : Evict 쓰레드를 수행시, 만료여부를 체크할 시간을 정의
11. numTestsPerEvictionRun : Evict 쓰레드를 수행시 수행할 커넥션의 갯수
12. removeAbandonedTimeout : 유효하지 안흔 커넥션의 삭제시의 타임아웃
13. removeAbandoned : 유효하지 않는 커넥션의 제거 여부
14. logAbandoned : 유효하지 않는 커넥션을 생성한 코드 위치 로그생성 여부
|