MyBatis란?
MyBatis는 Java 언어용 오픈 소스 ORM(Object-Relational Mapping) 프레임워크입니다. ORM은 객체와 데이터베이스의 관계를 매핑해주는 기술로, 개발자는 SQL 쿼리를 직접 작성하지 않고도 객체를 통해 데이터베이스에 접근할 수 있습니다. MyBatis는 이러한 ORM 기술을 Java 언어로 제공하며, SQL 매핑을 통해 개발자는 쉽게 데이터베이스와 상호작용할 수 있습니다.
SQL 매핑 방법
MyBatis에서 SQL 매핑은 XML 파일을 통해 정의하거나, 어노테이션을 이용하여 Java 코드 내에서 작성할 수 있습니다. 이번 예제에서는 XML 파일을 이용한 SQL 매핑 방법을 알아보겠습니다.
1. SQL 매핑 파일 생성
먼저, SQL 매핑 파일을 생성합니다. 보통 “Mapper”라는 접미사를 사용하여 파일 이름을 작성합니다. 예를 들어, “UserMapper.xml”과 같이 명명할 수 있습니다.
2. SQL 매핑 작성
SQL 매핑 파일에는 데이터베이스에서 수행할 SQL 쿼리가 작성됩니다. 다음은 “User” 테이블에 접근하는 예제입니다.
<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
<!-- SQL 매핑 작성 -->
<select id="getUserById" resultType="com.example.User">
SELECT * FROM user WHERE id = #{id}
</select>
<insert id="insertUser" parameterType="com.example.User">
INSERT INTO user (id, name, email) VALUES (#{id}, #{name}, #{email})
</insert>
<update id="updateUser" parameterType="com.example.User">
UPDATE user SET name = #{name}, email = #{email} WHERE id = #{id}
</update>
<delete id="deleteUser" parameterType="int">
DELETE FROM user WHERE id = #{id}
</delete>
</mapper>
위의 예제에서는 “User” 테이블과 관련된 네 가지 SQL 쿼리를 작성하였습니다.
getUserById
: id를 기준으로 사용자 정보를 가져오는 쿼리insertUser
: 사용자 정보를 삽입하는 쿼리updateUser
: 사용자 정보를 수정하는 쿼리deleteUser
: 사용자 정보를 삭제하는 쿼리
3. 매핑 파일 등록
마지막으로, 매핑 파일을 MyBatis 설정 파일에 등록해야 합니다. 설정 파일은 일반적으로 “mybatis-config.xml”이라는 이름으로 작성됩니다.
<!-- mybatis-config.xml -->
<configuration>
<mappers>
<mapper resource="com/example/UserMapper.xml"/>
</mappers>
</configuration>
위의 예제에서는 resource
속성을 사용하여 “UserMapper.xml” 파일을 등록하였습니다.
SQL 매핑 사용하기
이제 SQL 매핑을 사용하여 데이터베이스와 상호작용할 수 있습니다. MyBatis에서는 SqlSession
을 사용하여 SQL 매핑을 실행합니다. 다음은 SQL 매핑을 사용하여 사용자 정보를 가져오는 예제입니다.
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MyBatisExample {
public static void main(String[] args) {
// MyBatis 설정 파일을 빌드하여 SqlSessionFactory 생성
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(MyBatisExample.class.getResourceAsStream("/mybatis-config.xml"));
// SqlSessionFactory를 통해 SqlSession 생성
try (SqlSession session = sqlSessionFactory.openSession()) {
// SQL 매핑을 호출하여 사용자 정보 가져오기
User user = session.selectOne("com.example.UserMapper.getUserById", 1);
System.out.println(user);
}
}
}
위의 예제에서는 MyBatis 설정 파일을 빌드하여 SqlSessionFactory
를 생성한 후, SqlSession
을 통해 SQL 매핑을 실행하고 데이터를 가져옵니다. 매핑 파일에서 정의한 SQL 쿼리의 ID를 호출하면 해당 매핑이 실행되며, 매핑에서 정의한 결과 타입으로 데이터가 반환됩니다.
이처럼 Java MyBatis에서 SQL 매핑을 사용하여 데이터베이스와 상호작용할 수 있습니다. 자세한 내용은 MyBatis 공식 문서를 참조하시기 바랍니다.