반응형
MyBatis는 Java 기반의 데이터베이스 접근 프레임워크로, SQL 쿼리를 XML 파일이나 애너테이션으로 정의하고, 이를 Java 객체와 매핑하여 데이터베이스와의 상호작용을 쉽게 할 수 있도록 도와줍니다. MyBatis는 ORM(Object-Relational Mapping) 프레임워크와는 다르게 SQL을 직접 작성할 수 있는 유연성을 제공합니다.
1. MyBatis의 개요
1.1. 정의
- MyBatis: Java 애플리케이션에서 SQL을 사용하여 데이터베이스와 상호작용할 수 있게 해주는 프레임워크입니다. SQL 쿼리를 XML 파일에 정의하거나 애너테이션을 사용하여 매핑할 수 있습니다.
1.2. 역사
- MyBatis는 원래 iBATIS라는 이름으로 시작되었으며, Apache Software Foundation의 프로젝트였습니다. 현재는 MyBatis라는 이름으로 독립적인 오픈 소스 프로젝트로 발전하였습니다.
2. MyBatis의 장점
- SQL 중심의 접근: 개발자는 직접 SQL을 작성할 수 있어, 복잡한 쿼리나 데이터베이스 특화된 기능을 쉽게 사용할 수 있습니다.
- 유연한 매핑: XML이나 애너테이션을 사용하여 Java 객체와 SQL 쿼리를 매핑할 수 있어, 코드의 가독성과 유지보수성을 높입니다.
- 트랜잭션 관리: MyBatis는 JDBC를 기반으로 하므로, 트랜잭션 관리가 용이합니다.
- 다양한 데이터베이스 지원: MyBatis는 여러 데이터베이스 시스템을 지원하며, 데이터베이스 변경 시 SQL 쿼리만 수정하면 됩니다.
3. MyBatis의 특징
- SQL 매핑: SQL 쿼리를 XML 파일이나 애너테이션으로 정의하고, 이를 Java 객체와 매핑합니다.
- 동적 SQL: 조건에 따라 SQL 쿼리를 동적으로 생성할 수 있는 기능을 제공합니다. <if>, <choose>, <where>, <trim> 등의 태그를 사용하여 쿼리를 유동적으로 구성할 수 있습니다.
- 캐시 기능: 1차 캐시(세션 캐시)와 2차 캐시(전역 캐시)를 지원하여 데이터베이스 접근을 줄이고 성능을 향상시킵니다.
- 플러그인 시스템: MyBatis는 플러그인 시스템을 통해 쿼리 실행 전후에 추가적인 작업을 수행할 수 있습니다.
4. MyBatis의 구조
- SqlSessionFactory: 데이터베이스 연결을 관리하는 메인 객체입니다. SQL 세션을 생성합니다.
- SqlSession: 데이터베이스와의 상호작용을 담당하는 객체입니다. SQL 쿼리를 실행하고, 결과를 매핑합니다.
- Mapper: SQL 쿼리와 Java 메소드를 매핑하는 인터페이스입니다. XML 파일이나 애너테이션으로 정의된 SQL 쿼리를 사용합니다.
5. MyBatis의 활용
5.1. 백엔드 개발에서의 활용
- 데이터베이스 접근: 데이터베이스의 CRUD(Create, Read, Update, Delete) 작업을 수행하는 데 사용됩니다. 복잡한 쿼리도 쉽게 작성할 수 있습니다.
5.2. Spring Framework에서의 활용
- Spring과 통합: Spring Framework와 통합하여 MyBatis를 사용할 수 있습니다. Spring에서 제공하는 SqlSessionTemplate을 통해 MyBatis의 SqlSession을 관리할 수 있습니다.
- 트랜잭션 관리: Spring의 트랜잭션 관리 기능을 사용하여 MyBatis의 트랜잭션을 관리할 수 있습니다.
6. 예제 코드
6.1. MyBatis 설정
1. MyBatis 설정 파일 (mybatis-config.xml):
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="cohttp://m.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</dataSource>
</environment>
</environments>
</configuration>
2. Mapper XML (UserMapper.xml):
<mapper namespace="cohttp://m.example.mapper.UserMapper">
<select id="getUserById" parameterType="int" resultType="cohttp://m.example.model.User">
SELECT * FROM users WHERE id = #{id}
</select>
<insert id="insertUser" parameterType="cohttp://m.example.model.User">
INSERT INTO users (name, email) VALUES (#{name}, #{email})
</insert>
</mapper>
3. Mapper 인터페이스 (UserMapper.java):
package cohttp://m.example.mapper;
import cohttp://m.example.model.User;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper {
User getUserById(int id);
void insertUser(User user);
}
4. Service 클래스 (UserService.java):
import cohttp://m.example.mapper.UserMapper;
import cohttp://m.example.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User getUser(int id) {
return userMapper.getUserById(id);
}
public void createUser(User user) {
userMapper.insertUser(user);
}
}
7. 클라이언트에서의 호출 예시
클라이언트에서 RESTful API를 통해 사용자 정보를 요청할 수 있습니다. AJAX를 사용한 예시입니다.
// 특정 사용자 조회
$.ajax({
type: 'GET',
url: '/api/users/1',
success: function(user) {
console.log('User:', user);
},
error: function(xhr) {
console.error('Error fetching user:', xhr);
}
});
// 사용자 생성
$.ajax({
type: 'POST',
url: '/api/users',
contentType: 'application/json',
data: JSON.stringify({ name: 'John Doe', email: 'john@example.com' }),
success: function(user) {
console.log('User created:', user);
},
error: function(xhr) {
console.error('Error creating user:', xhr);
}
});
결론
MyBatis는 SQL을 사용하여 데이터베이스와 상호작용할 수 있는 강력한 프레임워크로, SQL 쿼리의 유연성을 제공합니다. Spring Framework와 통합하여 효율적인 데이터베이스 접근을 구현할 수 있으며, 복잡한 비즈니스 로직을 지원하는 데 유용합니다. MyBatis의 특성과 장점을 이해하고 활용하면, 데이터베이스 작업을 더 쉽게 처리할 수 있습니다.
반응형
'IT개발 > Mybatis, JPA' 카테고리의 다른 글
JPA & Hibernate 개념 (0) | 2025.01.17 |
---|---|
Mybatis & JPA 비교 (0) | 2025.01.17 |
댓글