a. JDBC의 예외처리(try/catch/finally)를 사용할 필요가 없다.
b. 기본적으로 PreparedStatement 구조이다.
c. Select 결과를 객체(custom Dto, map 등)에 매핑한다.
d. 트랜잭션을 관리할 수 있다.
1. 객체를 생성 -> @Autowired를 이용한 싱글톤 패턴
DBCP(Database Connection Pool)
-미리 커넥션을 생성해서 pool에 가지고 있다가 필요할때 가져다 쓰고 반환
-데이터베이스의 부하를 줄이고, 유동적으로 연결을 관리
"org.springframework.jdbc.datasource.DriverManagerDataSource"
스프링의 기본 DataSource인데, 테스트용이라서 실제 운영환경에서는
Apache의 Commons DBCP와 Tomcat-JDBC, BoneCP, HikariCP 같은 풀을 이용할 것!
2. SQL을 수행할 수 있는 환경을 만듦 -> SqlSession을 이용하여 관리
Mybatis에서는 SqlSessionTemplate을 제공해준다. 이는 SqlSessionFactory를 참조하고 있기때문에 해당 클래스만 사용하면 자동으로 세션관리가 되고, 세션 객체는 싱글톤으로 구현된다.
3. 쿼리문을 직접 String으로 구현 -> xml로 관리한다.
직접 String으로 구현하면 유지보수나 관리 측면에서 비효율적이다. 따라서 Mybatis에서는 XML파일로 만들어 이런 식으로 연결을 하게 된다.
참고 :
https://m.blog.naver.com/scw0531/220994817547
https://d2.naver.com/helloworld/5102792
https://kakaocommerce.tistory.com/45
https://do-study.tistory.com/96 (HikariCP + Mysql 조합이면 읽어보면 좋음)
https://github.com/brettwooldridge/HikariCP/wiki/Pool-Analysis
(Hikari에서 제공하는 pool분석)
https://woowabros.github.io/experience/2020/02/06/hikaricp-avoid-dead-lock.html
(Hikari Deadlock 오류 발생시 해결.. 꿀잼임 강추)
https://effectivesquid.tistory.com/entry/HikariCP-%EC%84%B8%ED%8C%85%EC%8B%9C-%EC%98%B5%EC%85%98-%EC%84%A4%EB%AA%85
(Hikari 속성 설정)
https://mybatis.org/spring/ko/sqlsession.html
(SqlSessionTemplate 사용 공식문서)