-
[Mybatis 시리즈 2] DataSouce와 DBCP (DataBase Connection Pool)Spring Boot/DB 2022. 4. 14. 23:03
Mybatis는 O/R Mapper다. 즉 Object와 Relational(관계형 데이터베이스)의 교두보 역할이다.
근데 다 떠나서, Web App이랑 DB랑 연결이 되어 있어야 쓰던가 말던 한다.
연결할때 사용하는 주요 키워드를 정리한다.
JDBC - WAS에서 DB에 접근하려면?
Application과 DB를 연결하는 것은 JDBC이다.
- JDBC Driver : 디비 벤더(오라클, mysql)에서 제공하는 DB와 연결하게 해주는 컴포넌트
- DB 연결 과정
- JDBC 드라이버 로드 **.jdbc.Driver
- Connection(Thread 생성) → DB 작업 처리 → Close : 이 과정에서 DB Connection 객체 생성 비용, 시간, 네트워크 연결 비용 등등 지속적인 부하
String driverPath = "net.sourceforge.jtds.jdbc.Driver"; String address = "jdbc:jtds:sqlserver://IP/DB"; String userName = "user"; String password = "password"; String query = "SELECT ... where id = ?"; try { Class.forName(driverPath); Connection connection = DriverManager.getConnection(address, userName, password); PreparedStatement ps = con.prepareStatement(query); ps.setString(1, id); ResultSet rs = get.executeQuery(); // .... } catch (Exception e) { } } finally { rs.close(); ps.close(); }
DBCP (Database Connection Pool)
위와 같은 상황을 해결해주는 것이 커넥션 풀이다. 아래 디펜던시를 사용하면 hikari DBCP가 default로 사용.
(자세히 다루면 마이바티스 시리즈가 아니라 맨 마지막 reference 참고)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>
- WAS가 실행되면서 미리 일정량의 DB Connection 객체를 생성하고 Pool 이라는 공간에 저장해 둔다.
- HTTP 요청에 따라 필요할 때 Pool에서 Connection 객체를 가져다 쓰고 반환한다.
SpringBoot-JDBC 설정해서 DB 연결하기
Build.gradle
implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'mysql:mysql-connector-java'
Reference
https://www.holaxprogramming.com/2013/01/10/devops-how-to-manage-dbcp/
https://bamdule.tistory.com/166
반응형'Spring Boot > DB' 카테고리의 다른 글
[M1 Mac] Mysql 명령어 정리 (+ docker로 설치) (0) 2023.06.27 [SQL] Or 와 In 조건 뭐가 더 좋을까? SELECT OR vs IN, which is better performance. (0) 2022.07.15 Flyway로 데이터베이스 마이그레이션 해보자 (이론편) (0) 2022.07.14 [Mybatis 시리즈 1] 동작 원리와 스프링에서 어떻게 사용될까? (0) 2022.04.14 DB 연결 시, 특정 객체만 close() 하는 이유 (0) 2022.01.11