| 구분 | 설명 |
|---|---|
| 정의 | Java에서 DB와 직접 연결하고 SQL 실행을 담당하는 순수 JDBC 방식 |
| 역할 | 데이터베이스와의 연결, SQL 실행, 결과 집합(ResultSet) 처리 |
| 단점 | 반복되는 코드가 많고, 유지보수가 어렵다 |
| 인터페이스 | 역할 |
|---|---|
Connection | DB 연결 객체 |
PreparedStatement | SQL 실행 객체 (매개변수 바인딩 지원) |
ResultSet | SQL 실행 결과를 저장하는 객체 |
MyBatis는 JDBC보다 더 편리한 DB 연동 기능을 제공하며, 객체와 SQL 간의 매핑을 자동으로 처리하는 프레임워크입니다.
| 항목 | 내용 |
|---|---|
| 주요 기능 | SQL 매핑, 결과 자동 매핑, 유연성, Spring 공식 지원 |
| 장점 | XML 또는 어노테이션으로 SQL 관리 → 코드 분리 \& 유지보수 용이 |
| 공식 지원 | start.spring.io에서 스프링 부트 프로젝트 설정 시 MyBatis Starter 지원 |
application.properties 파일은 resources 폴더 내에 존재하며, MyBatis와 DB를 연결하기 위한 설정을 정의합니다.
# JDBC 연결 설정 예시
spring.datasource.url=jdbc:mysql://localhost:3306/DB명
spring.datasource.username=계정명
spring.datasource.password=비밀번호
💡 Tip: UTF-8 인코딩 문제 발생 시, IntelliJ → 설정 → '파일 인코딩' →
properties default encoding: UTF-8로 설정하세요.
Mapper Interface는 Dao의 역할을 대신하며, 인터페이스와 어노테이션을 통해 SQL을 실행합니다.
| 구분 | JDBC | MyBatis |
|---|---|---|
| SQL 작성 | insert into student(name, kor, math) values (?, ?, ?) | insert into student(name, kor, math) values (#{매개변수1}, #{매개변수2}, #{매개변수3}) |
| 매개변수 전달 방식 | 물음표(?)로 대입 | #{}로 대입 (자동 매핑) |
| 매개변수 매핑 조건 | 수동 지정 필요 | Dto 변수명 = DB 컬럼명 일치 시 자동 매핑 |
📘 즉, MyBatis는 Dao의 SQL 직접 작성과 PreparedStatement 작업을 대체하며, 코드량을 크게 줄입니다.
1️⃣ Mapper Interface를 생성 후, @Mapper 어노테이션을 붙인다.
2️⃣ SQL문에 어노테이션을 추가한다. (@Select, @Insert, @Update, @Delete)
3️⃣ Service에서 의존성 주입(@Autowired) 을 통해 Mapper를 호출한다.
4️⃣ Dto의 변수명과 DB 컬럼명이 일치하면, 마이바티스가 자동으로 매핑해준다.