[java] MyBatis에서 세션 관리하기

MyBatis는 자바 어플리케이션에서 데이터베이스와의 상호작용을 간편하게 처리할 수 있는 ORM(Object-Relational Mapping) 도구입니다. MyBatis를 사용하면 SQL 쿼리를 직접 작성하지 않고도 객체와 데이터베이스 간의 매핑을 쉽게 처리할 수 있습니다.

이번 포스트에서는 MyBatis에서 세션을 어떻게 관리하는지 알아보겠습니다. 세션은 MyBatis에서 데이터베이스 연결 및 트랜잭션 관리를 담당하는 핵심 컴포넌트입니다.

세션 만들기

MyBatis에서 세션은 SqlSessionFactory 인터페이스를 통해 생성됩니다. SqlSessionFactory는 MyBatis 설정 파일을 로드하고 데이터베이스 연결 정보를 가져와서 세션을 생성합니다. 다음은 SqlSessionFactory를 사용하여 세션을 생성하는 예시 코드입니다.

import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisSessionExample {
    public static void main(String[] args) {
        // MyBatis 설정 파일 로드
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);

        // SqlSessionFactory 생성
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 세션 생성
        SqlSession session = sessionFactory.openSession();
        
        // 세션 사용
        
        // 세션 닫기
        session.close();
    }
}

설정 파일(mybatis-config.xml)은 MyBatis 설정과 데이터베이스 연결 정보를 정의하는 역할을 합니다. SqlSessionFactoryBuilder를 사용하여 설정 파일을 읽어와서 SqlSessionFactory를 생성하고, 이를 통해 세션을 생성합니다.

세션 사용하기

세션을 생성한 후에는 MyBatis의 매퍼(Mapper) 인터페이스를 사용하여 데이터베이스와의 상호작용을 할 수 있습니다. 매퍼 인터페이스는 SQL 쿼리를 메소드로 정의하고, MyBatis가 이를 자동으로 매핑하여 실행해줍니다.

다음은 MyBatis에서 세션을 사용하여 데이터베이스에서 정보를 조회하는 예시 코드입니다.

public interface UserMapper {
    User selectUserById(int id);
}

// ...

UserMapper userMapper = session.getMapper(UserMapper.class);
User user = userMapper.selectUserById(1);

위의 예시 코드에서 UserMapper 인터페이스는 “selectUserById”라는 메소드를 정의하고 있습니다. 이 메소드는 id 값을 받아와서 데이터베이스에서 해당하는 사용자 정보를 조회하는 SQL 쿼리를 실행합니다.

MyBatis는 매퍼 인터페이스의 메소드 이름과 SQL 매핑 정보를 사용하여 자동으로 SQL 쿼리를 작성하고 실행합니다. 결과로는 데이터베이스에서 조회한 사용자 정보인 User 객체를 반환합니다.

세션 닫기

세션을 사용한 후에는 항상 세션을 닫아야 합니다. 세션을 닫지 않으면 리소스 누수가 발생할 수 있고, 데이터베이스 연결이 오랜 시간동안 유지될 수 있습니다. 따라서 세션 사용이 끝나면 반드시 close() 메소드를 호출해서 세션을 닫아야 합니다.

session.close();

결론

MyBatis에서 세션은 데이터베이스 연결 및 트랜잭션 관리를 담당하는 중요한 컴포넌트입니다. 세션을 어떻게 생성하고 사용하는지 알아보았습니다. 이를 통해 MyBatis를 효율적으로 사용할 수 있고, 데이터베이스와의 상호작용을 간편하게 처리할 수 있습니다.

더 자세한 정보는 MyBatis 공식 홈페이지를 참조하세요.