반응형
커넥션 풀을 사용하는 이유
클라이언트에서 다수의 요청이 발생할 경우, 데이터베이스에 부하가 발생
커넥션 풀은 미리 커넥션 객체를 생성해두고, 클라이언트 요청시 빌려주고 사용 한 후 회수하는 방식
1. mvnrepository.com 에서 HikariCP 를 검색해 Java에 맞는 버전을 찾아 복사하고 pom.xml <dependencies> 태그에 붙여넣기
<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>4.0.3</version>
</dependency>
2. root-context.xml 내부에 bean 설정
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="oracle.jdbc.OracleDriver"></property>
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:51521/XEPDB1"></property>
<property name="username" value="Oracle 사용자계정"></property>
<property name="password" value="Oracle 비밀번호"></property>
</bean>
HikariCP에 접속 정보 입력
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig"></constructor-arg>
</bean>
커넥션 풀을 담당하는 DataSource 객체(DB에 이용되는 DriverClass, URL, ID, PASSWORD를 미리 정의해둔 객체)에 삽입
3. src/test/java 경로에 OracleConnectionPoolTest 생성
4. 테스트 코드 작성
// @ContextConfiguration: Beans Graph 내부에 설정되어있는 dataSource 를 쓰기 위한 위치 설정
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class OracleConnectionPoolTest {
// 자동 주입(ContextConfiguration에 설정된 공장 주소에서 맞는 자료형을 넣어줌)
@Autowired
private DataSource dataSource;
@Test
public void testConnection() {
// 커넥션 풀 설정이 된 코드는 DataSource 객체가 connection을 호출
try(Connection con = dataSource.getConnection()){
log.info(con);
log.info("HikariCP connected");
}catch(Exception e) {
fail(e.getMessage());
}
}
}
5. HikariPool을 활용한 접속 로그 확인 가능(시스템 부하에 따른 조절을 하는 것을 확인할 수 있음)
'Spring' 카테고리의 다른 글
[Spring] MyBatis에서 selectkey 사용 (0) | 2021.09.18 |
---|---|
[Spring] Mapper 인터페이스와 Mapper.xml (0) | 2021.09.14 |
[Spring] Oracle DB 연결 테스트 (0) | 2021.09.11 |
[Spring] Maven repository 외부 라이브러리 추가 (0) | 2021.09.10 |
[Spring] Maven 의존성 관리와 pom.xml (0) | 2021.09.09 |