우선 HikariCP가 무엇인지 왜 사용하는지 궁금한 분들이 있을 것이다.
간단하게 설명을 하자면 DB를 사용하려면 Connection을 맺고 끊는 작업이 필요하다.
이는 리소스의 소모가 많은 작업이다. 따라서 pooling이라는 기법을 통해서 객체를 미리 생성하고 빌려 쓰는 방식으로
이용해서 연결시간을 단축한다.
spring boot 2.0이전에는 tomcat jdbc를 이용하였는데 이후에는 성능좋은 HikariCP를 이용하게 되었다.
https://mvnrepository.com/artifact/com.zaxxer/HikariCP
위에 링크에 접속하여 3.4.5버전을 다운받아보자.
위의 dependency를 복사하여 porm.xml에 넣어줄 것이다.
추가를 하면 알아서 다운로드를 진행해준다.
그리고 root-context.xml에 아래 코드를 추가해준다.
<bean id="hikariConfig"
class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:xe" />
<property name="username" value="book_ex" />
<property name="password" value="book_ex" />
</bean>
여기까지 잘 따라오셨다면 Spring Explorer에 아래처럼 hikariConfig bean이 잘 추가된 것을 볼 수 있다.
또 밑의 코드도 추가하길 바란다.
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig"></constructor-arg>
</bean>
이렇게되면 connection pooling이 된것이다.
방금전에 Datasource를 만들어줬으니 검사를 해보자.
처음에 했던 예제는 어노테이션으로 주입한것이고 이번엔 xml로 주입해본것이다.
그러면 어느때에 어노테이션으로 주입하고 어느때에 xml을 주입하느냐라고 봤을때
소스코드의 유무로 따진다.
1.소스코드가 있을 때 : 어노테이션
2.소스코드가 없을 때 : xml
이렇게 생각하면 아주 심플하다.
자 다시 본론으로 돌아와서 test를 해보겠다.
우선 test파일을 만들고
package org.zero.persistance;
import java.sql.Connection;
import javax.sql.DataSource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import lombok.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class DataSourceTests {
@Autowired
private DataSource ds;
@Test
public void testConnection() {
try(Connection con = ds.getConnection()){
log.info(con);
}catch(Exception e){
e.printStackTrace();
log.error(e.getMessage());
}
}
}
위의 코드를 작성하여 커넥션이 되었는지 log를 띄워보겠다.
히카리로 부터 커넥션이 맺어진 것을 볼 수 있다. 끝!

다음 글에서 Mybatis연동을 알아보겠다.
'Spring' 카테고리의 다른 글
[Part 1] 스프링 MVC #9 (0) | 2023.01.14 |
---|---|
[Part 1] MyBatis 연동 #8 (0) | 2023.01.13 |
[Part 1] DB연결하기 #6 (0) | 2023.01.10 |
[Part 1] 의존성 주입 실습(추가설명) #5 (0) | 2023.01.08 |
[Part 1] 의존성 주입 실습 #4 (0) | 2023.01.08 |