[Mybatis] 프록시(Proxy) 생성 예제

MyBatis에서 프록시(Proxy)는 매퍼 인터페이스를 구현하는 객체를 동적으로 생성하여 데이터베이스와 상호 작용하는 데 사용됩니다. 프록시는 SQL을 호출하는 코드를 작성하지 않고도 SQL 매퍼 인터페이스의 메서드를 호출할 수 있도록 도와줍니다. 아래는 프록시 생성 예제입니다.

예제: 프록시 생성

  1. 매퍼 인터페이스 작성:

먼저 매퍼 인터페이스를 작성합니다.

public interface UserMapper {
    User getUserById(Long id);
    List<User> getAllUsers();
    // 다른 매퍼 메서드들...
}` 
  1. 매퍼 XML 파일 작성:
<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
    <select id="getUserById" resultType="User">
        SELECT * FROM users WHERE user_id = #{id}
    </select>
    <select id="getAllUsers" resultType="User">
        SELECT * FROM users
    </select>
    <!-- 다른 SQL 매핑들... -->
</mapper>` 
  1. SqlSessionFactory 생성 및 프록시 사용:
public class Main {

    public static void main(String[] args) {
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        try (SqlSession sqlSession = sessionFactory.openSession()) {
            // 프록시 생성
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

            // 매퍼 인터페이스의 메서드 호출
            User user = userMapper.getUserById(1L);
            List<User> allUsers = userMapper.getAllUsers();

            System.out.println("User: " + user);
            System.out.println("All Users: " + allUsers);
        }
    }
}` 

위의 예제에서는 sqlSession.getMapper(UserMapper.class)를 사용하여 매퍼 인터페이스를 구현한 프록시 객체를 생성하고, 매퍼 인터페이스의 메서드를 호출합니다. MyBatis는 프록시를 사용하여 실제로 필요한 SQL을 실행하고 결과를 반환합니다.

프록시를 사용하면 데이터베이스와 상호 작용하는 코드를 더 간결하게 작성할 수 있으며, SQL 매퍼 인터페이스를 사용하여 데이터베이스 쿼리를 호출할 수 있습니다.