[java] MyBatis를 사용한 프로시저 호출 방법

MyBatis는 Java 언어를 위한 ORM(Object-Relational Mapping) 프레임워크로, SQL 매핑 및 데이터베이스 접근을 위한 간단한 인터페이스를 제공합니다. 프로시저(procedure)는 데이터베이스 내에서 일련의 작업을 수행하는데 사용되며, MyBatis를 통해 프로시저를 호출하는 방법에 대해 알아보겠습니다.

1. 프로시저 정의

우선 데이터베이스에 필요한 프로시저를 정의해야 합니다. 프로시저는 데이터베이스에 따라 다르지만, 주로 PL/SQL 또는 Transact-SQL과 같은 프로시저 언어를 사용하여 정의됩니다.

예를 들어, 아래는 EMPLOYEE 테이블에서 직원 정보를 조회하는 간단한 프로시저의 예시입니다:

CREATE OR REPLACE PROCEDURE GET_EMPLOYEE(
    EMP_ID IN NUMBER,
    EMPLOYEE OUT SYS_REFCURSOR
)
AS
BEGIN
    OPEN EMPLOYEE FOR SELECT * FROM EMPLOYEE WHERE EMPLOYEE_ID = EMP_ID;
END;

2. MyBatis Mapper 정의

다음으로 MyBatis Mapper 파일에 프로시저를 호출하기 위한 매핑을 정의해야 합니다. 아래는 EMPLOYEE 테이블의 프로시저를 호출하는 매퍼의 예시입니다:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.example.EmployeeMapper">
    <select id="getEmployee" parameterType="map" statementType="CALLABLE">
        { call GET_EMPLOYEE(
            #{employeeId, mode=IN, jdbcType=INTEGER},
            #{result, mode=OUT, jdbcType=CURSOR, javaType=java.sql.ResultSet, resultMap=EmployeeResultMap}
        )}
    </select>
</mapper>

3. Java 코드에서 프로시저 호출

마지막으로 Java 코드에서 MyBatis를 사용하여 프로시저를 호출할 수 있습니다. 아래는 프로시저를 호출하는 Java 코드의 예시입니다:

import org.apache.ibatis.session.SqlSession;
import com.example.EmployeeMapper;

public class EmployeeService {
    public Employee getEmployeeById(int employeeId) {
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
            HashMap<String, Object> params = new HashMap<>();
            params.put("employeeId", employeeId);
            mapper.getEmployee(params);
            ResultSet resultSet = (ResultSet) params.get("result");
            // 결과셋 처리 로직
        }
    }
}

위의 단계를 따라 프로시저를 MyBatis를 사용하여 호출할 수 있습니다. 프로시저의 복잡성과 유연성에 따라 추가적인 설정 및 처리가 필요할 수 있으며, 실제 구현에서는 해당 부분을 고려해야 합니다.

이상으로 MyBatis를 사용하여 프로시저를 호출하는 방법에 대해 안내드렸습니다. 부족한 부분이 있을 수 있으니 자세한 내용은 MyBatis 공식 문서나 관련 자료를 참고하시기 바랍니다.

Reference: