HikariCP
데이터베이스와 애플리케이션 간의 연결을 관리하는데 있어 가장 빠르고 가벼운 JDBC Connection Pool 오픈소스 라이브러리인 JDBC DataSource 구현체입니다.
Connection Pool
WAS(웹 컨테이너)가 실행될 때 DB연결을 위해 미리 일정수의 connection 객체를 만들어 Pool에 담아 뒀다가 클라이언트의 요청이 발생하면 pool에서 생성되어 있는 connection 객체를 넘겨주고 처리가 끝나면 해당 객체를 다시 pool에 보관하는 방식을 뜻합니다.
쉽게 말하자면 바닷가에 튜브 대여점을 생각하면 될 것 같습니다. 대여점에 튜브 갯수는 정해져 있으며 고객이 빌려가서 사용이 끝나면 반납합니다.
장점 |
1. 서버 부하를 줄여준다. |
2. 서버의 한정적인 자원을 효율적으로 사용할 수 있다. |
주의해야할 점은 connection pool을 늘린다고 성능이 좋아지는 것은 아닙니다. WAS와 DB 연결은 thread가 담당하며, thread도 pool을 가지고 있습니다. 만약 thread pool 크기보다 connection pool 크기가 더 크다면 메모리상에서 남은 connection은 작업을 하지 못하고 메모리 공간만 차지합니다.
MyBatis
데이터베이스를 쉽게 다룰 수 있도록 도와주는 오픈 소스 프레임워크입니다. 데이터베이스 쿼리와 프로그래밍 언어 코드를 분리하여 유지보수성과 생산성을 높일 수 있습니다.
유연성 | SQL쿼리를 직접 작성할 수 있으므로 매우 유연하다. MyBatis는 동적 쿼리를 작성할 수 있다. |
간결성 | 코드 분리를 통해 코드가 간결해져서 유지보수에 용이하다. |
성능 | 캐시 기능을 제공하여 데이터베이스 연산 속도를 높일 수 있다. |
다양한 데이터베이스 지원 | 다양한 데이터베이스 지원을 제공합니다. |
※ 동적쿼리 : 실행 시점에 조건에 따라 SQL 쿼리를 동적으로 생성하는 것을 의미합니다. 데이터베이스 검색 조건이나 결과값 등이 동적으로 변화할 때 유용합니다. <if>,<choose>,<when>,<otherwise>,<foreach> 등의 태그를 활용하여 동적쿼리를 작성할 수 있습니다.
'Java' 카테고리의 다른 글
Wrapper class 래퍼 클래스 (0) | 2024.07.03 |
---|---|
Query String, Path Variable (0) | 2024.07.02 |
서블릿과 데이터베이스 연동 (0) | 2024.07.01 |
디자인 패턴 - 싱글톤 패턴 (0) | 2024.07.01 |
서블릿과 서블릿 컨텍스트(html 파일 불러오기) (0) | 2024.07.01 |