
1. JDBC의 이점
(1)
기존: 사용하고 있는 DB를 바꿀 경우 app서버의 DB 사용코드도 변경해야 함
해결: JDBC 표준 인터페이스에만 의존
(2)
기존: 'DB마다' 커넥션 연결, SQL 전달, 그리고 그 결과를 응답 받는 방법을 새로 학습해야하는 문제
해결: 개발자는 JDBC 표준 인터페이스 사용법만 학습하면 된다.
2 JDBC 연결 후 사용법
(1) connection 정보 : URL, ID, PASSWORD, ClassName(Driver라고도 하며 요즘에는 Url을 보고 자동으로 driver를 설정해줌, App와 DB 사이의 통신 담당 드라이버를 지정)
(2) 연결 후 : connection, preparedStatment, resultSet

3.ConnectionPool
발생 배경 : connection을 획득하기 위해는 복잡한 과정을 거친다. 시간 또한 많이 소모된다. 이는 고객에게 안좋은 경험을 줄 수 있다. 따라서 커넥션을 미리 생성해두고 사용하는 방법이다.
그래서 connectionPool이란? : 커넥션을 관리하는 pool이다. app를 시작하는 시점에 커넥션을 미리 확보해서 풀에 보관한다. client는 커넥션을 사용하고 커넥션이 열린채로 커넥션 풀에 다시 반환한다. 대표적인 커넥션 풀 오픈소스는 hikariCP를 주로 사용한다.
connection.close()를 사용하면 ConnectionPool인 경우에는 connection을 닫는 것이 아니라, connection을 pool에 반환한다.
정리 : 1. connection은 연결하기가 오래걸림, 2. 따라서 connection 객체들을 pool 형태로 관리함
@BeforeEach
void beforeEach(){
// 기본 DriverManager - 항상 새로운 커넥션을 획득, 성능이 안좋음, 매 sql실행마다
// 커넥션을 만들어야 함
// DriverManagerDataSource dataSource = new DriverManagerDataSource(ConnectionConst.URL, ConnectionConst.USERNAME, ConnectionConst.PASSWORD);
// 커넥션 풀링
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl(ConnectionConst.URL);
dataSource.setUsername(ConnectionConst.USERNAME);
dataSource.setPassword(ConnectionConst.PASSWORD);
repository = new MemberRepositoryV1(dataSource);
}