JDBC를 자동화하기엔 아래와 같이 한계점이 존재한다.
📍 JDBC 순서에 따른 자동화의 한계점
1️⃣ Driver Loading
- Driver Class Name은 뭘 쓸지 모르기 때문에 알려줘야 함
2️⃣ Connection(DB연결)
- url, username, password는 알 수 없음
3️⃣ SQL
- insert, select인지 어떤 쿼리인지 알 수 없음
4️⃣ PreparedStatement 만들고 set (값 세팅)
- 생성은 가능해도 값이 어떤 게 들어갈지 모르기 때문에 알 수 없음
5️⃣ Execute
- insert, update, delete는 자동으로 실행 가능. return 타입이 int이기 때문에.
- 그러나 select는 ResultSet이라 공통이라 생각할 수 있지만, ResultSet을 자바에 바로 사용할 수 없어 next()를 사용하여 DTO 등에 데이터를 넣는 것처럼 어떤 Dto에 데이터를 넣는지 알 수 없기 때문에 자동화 불가능
- 따라서 DTO 지정이 필요
6️⃣ Close
- 자동화 가능
=> 따라서 각 단계별 볼드처리한 부분만 세팅해준다면 JDBC 대신 Framework로 바꿀 수 있다. 여기서는 Mybatis로!
📍 MyBatis
- Java Object와 SQL뭄 사이의 자동 Mapping 기능을 지원하는 ORM Framework
- DAO에 있는 JDBC를 대신하는 Framework(단, 위 세팅 해야할 부분을 xml에 세팅해주기)
- MyBatis는 SQL을 별도의 파일로 분리해서 관리
- Object - SQL 사이의 parameter mapping 작업을 자동으로 해 줌.
- MyBatis는 Hibernate나 JPA(Java Persistence API)처럼 새로운 DB 프로그래밍 패러다임을 익혀야 하는 부담없이, 개발자가 익숙한 SQL을 그대로 사용하면서 JDBC 코드 작성의 불편함을 제거해 주고, 도메인 객체나 VO 객체를 중심으로 개발이 가능
📍 MyBatis의 특징
- 쉬운 접근성과 코드의 간결함
- 가장 간단한 persistence framework
- XML 형태로 서술된 JDBC 코드라 생각해도 될 만큼 JDBC의 모든 기능을 MyBatis가 대부분 제공
- 복잡한 JDBC 코드를 걷어내며 깔끔한 소스코드 유지
- 수동적인 parameter 설정과 Query 결과에 대한 mapping 구문을 제거
- SQL문과 프로그래밍 코드의 분리
- SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일 하지 않아도 됨
- SQL 작성과 관리 또는 검토를 DBA와 같은 개발자가 아닌 다른 사람에게 맡길 수 있음
- 다양한 프로그래밍 언어로 구현 가능
- Java, C#, .NET, Ruby, ...
🔗 MyBatis User Guide