mybatis <
MyBatis는 자바 언어를 위한 간단하고 강력한 ORM(Object-Relational Mapping) 프레임워크입니다. ORM은 데이터베이스와 객체 간의 매핑을 자동으로 처리하여 개발자가 직접 SQL 쿼리를 사용하지 않고 데이터베이스에 접근할 수 있도록 도와줍니다.
MyBatis의 주요 특징
- SQL과 자바 코드의 분리: MyBatis는 SQL 문장을 XML 파일에 작성하고 자바 코드에서는 XML을 호출하여 SQL을 실행합니다. 이렇게 함으로써 비즈니스 로직과 데이터 액세스 로직을 분리할 수 있습니다.
- 간결하고 직관적인 코드: MyBatis는 간단하고 직관적인 인터페이스를 제공하여 개발자가 코드를 쉽게 이해하고 유지보수할 수 있도록 합니다.
- 동적 쿼리 지원: MyBatis는 동적 SQL을 쉽게 작성할 수 있는 기능을 제공하여 복잡한 쿼리를 유연하게 처리할 수 있습니다.
- 강력한 캐싱 기능: MyBatis는 캐싱을 지원하여 반복적으로 실행되는 쿼리의 결과를 메모리에 저장하여 성능을 향상시킵니다.
- 다양한 데이터베이스 지원: MyBatis는 다양한 데이터베이스에 대한 드라이버를 제공하며, 매우 넓은 범위의 데이터베이스 시스템과 호환됩니다.
MyBatis 사용 예제
1. MyBatis 의존성 추가
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
2. MyBatis 설정 파일 작성
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_example" />
<property name="username" value="root" />
<property name="password" value="password" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/UserMapper.xml" />
</mappers>
</configuration>
3. SQL 매핑 파일 작성
<mapper namespace="com.example.mapper.UserMapper">
<select id="getUserById" parameterType="int" resultType="com.example.model.User">
SELECT * FROM users WHERE id = #{id}
</select>
<insert id="insertUser" parameterType="com.example.model.User">
INSERT INTO users (id, name, age) VALUES (#{id}, #{name}, #{age})
</insert>
<update id="updateUser" parameterType="com.example.model.User">
UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
</mapper>
4. MyBatis를 사용하여 데이터베이스 액세스
public class UserDao {
private final SqlSessionFactory sqlSessionFactory;
public UserDao() {
// MyBatis 설정 파일을 로드
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
public User getUserById(int id) {
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper userMapper = session.getMapper(UserMapper.class);
return userMapper.getUserById(id);
}
}
public void insertUser(User user) {
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper userMapper = session.getMapper(UserMapper.class);
userMapper.insertUser(user);
session.commit();
}
}
public void updateUser(User user) {
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper userMapper = session.getMapper(UserMapper.class);
userMapper.updateUser(user);
session.commit();
}
}
}
마무리
MyBatis는 데이터베이스 액세스를 간단하고 효율적으로 처리하기 위한 강력한 도구입니다. SQL과 자바 코드의 분리, 동적 쿼리 지원, 캐싱 기능 등 다양한 기능을 제공하여 개발자들이 데이터베이스와 상호작용하는 데 도움을 줍니다. 이제 MyBatis를 사용하여 데이터베이스 액세스를 간편하게 처리할 수 있을 것입니다. #MyBatis #ORM