con을 close를 하더라도 커넥션 풀에서 꺼내면 히카리 커넥션 풀이라는게 감싸고 있어서 커넥션 풀에 커넥션을 반환하는 로직이 들어있다.
DriverManager.getConnection(URL, USERNAME, PASSWORD); // 커넥션 하나를 db랑 연결해서 얻게됨
예외가 왜 계속 발생하는 걸까
@Test
void driverManager() throws SQLException {
Connection con1 = DriverManager.getConnection(URL, USERNAME, PASSWORD);//커넥션 하나를 db랑 연결해서 얻게됨
Connection con2 = DriverManager.getConnection(URL, USERNAME, PASSWORD);
log.info("connection={},class={}",con1,con1.getClass());
log.info("connection={},class={}",con2,con2.getClass());
}
@Test
void dataSourceDriverManager() throws SQLException {
//DriverManagerDataSource - 항상 새로운 커넥션을 획득
DriverManagerDataSource dataSource = new DriverManagerDataSource(URL, USERNAME, PASSWORD);
userDataSource(dataSource);
}
스프링에서 jdbc를 쓰면 자동으로 hikari가 import됨
dataSource를 사용하려면 의존관계 주입을 받아야한다
반환해줄 때 hikari 프록시 안에 객체를 생성해서 그 안에 conn0을 담아서 반환. 따라서 hikari 프록시 인스턴스 값이 다른것.