MyBatis는 SQL 중심의 데이터 매핑 프레임워크로, Java와 데이터베이스를 연결하는 도구이다. SQL 작성의 자유도를 제공하며, 객체와 데이터베이스 간 매핑을 간소화한다.
MyBatis를 활용할 때 두 가지 주요 접근 방식이 있다.
1. @Mapper를 활용한 간단한 CRUD 작업
2. DAO + XML Mapper를 활용한 체계적인 SQL 관리
@Mapper는 간단한 SQL 작업에서 매우 유용하다.
인터페이스에 SQL을 직접 작성하여 Java 코드와 데이터베이스를 매핑한다.
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.1</version>
</dependency>
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: password
public class User {
private Long id;
private String name;
private String email;
// Getters and Setters
}
@Mapper
public interface UserMapper {
@Select("SELECT * FROM users WHERE id = #{id}")
User getUserById(Long id);
@Insert("INSERT INTO users(name, email) VALUES(#{name}, #{email})")
void insertUser(User user);
@Update("UPDATE users SET name = #{name}, email = #{email} WHERE id = #{id}")
void updateUser(User user);
@Delete("DELETE FROM users WHERE id = #{id}")
void deleteUser(Long id);
}
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: password
mybatis:
mapper-locations: classpath:mappers/**/*.xml
public class User {
private Long id;
private String name;
private String email;
// Getters and Setters
}
public interface UserDAO {
User getUserById(Long id);
void insertUser(User user);
void updateUser(User user);
void deleteUser(Long id);
}
<mapper namespace="com.example.dao.UserDAO">
<select id="getUserById" resultType="com.example.entity.User">
SELECT * FROM users WHERE id = #{id}
</select>
<insert id="insertUser" parameterType="com.example.entity.User">
INSERT INTO users (name, email)
VALUES (#{name}, #{email})
</insert>
<update id="updateUser" parameterType="com.example.entity.User">
UPDATE users
SET name = #{name}, email = #{email}
WHERE id = #{id}
</update>
<delete id="deleteUser" parameterType="long">
DELETE FROM users WHERE id = #{id}
</delete>
</mapper>
항목 | @Mapper 방식 | DAO + XML Mapper 방식 |
---|---|---|
SQL 관리 | SQL이 Java 코드에 포함됨, 간단한 CRUD 적합 | SQL이 XML로 분리, 복잡한 쿼리에 적합 |
유지보수성 | SQL과 코드가 섞여 있어 관리가 어려울 수 있음 | SQL이 분리되어 있어 유지보수에 유리 |
설정 용이성 | @Mapper 만 추가하면 간단하게 사용 가능 | XML 파일 작성 필요, 초기 설정 복잡 |
결론적으로 간단한 CRUD 작업에는 @Mapper 방식을 사용하고 복잡한 SQL 작업이 많은 프로젝트에서는 DAO + XML Mapper 방식을 활용하는 쪽으로 하면 좋을 것 같다.
이번 정리를 통해 MyBatis의 두 가지 주요 사용 방식을 이해하게 되었고 프로젝트 성격에 따라 적절한 방식을 선택하여 활용할 수 있다는 점을 배울 수 있었다.