[Mybatis] 프록시(Proxy) 생성 예제
MyBatis에서 프록시(Proxy)는 매퍼 인터페이스를 구현하는 객체를 동적으로 생성하여 데이터베이스와 상호 작용하는 데 사용됩니다. 프록시는 SQL을 호출하는 코드를 작성하지 않고도 SQL 매퍼 인터페이스의 메서드를 호출할 수 있도록 도와줍니다. 아래는 프록시 생성 예제입니다.
예제: 프록시 생성
- 매퍼 인터페이스 작성:
먼저 매퍼 인터페이스를 작성합니다.
public interface UserMapper {
User getUserById(Long id);
List<User> getAllUsers();
// 다른 매퍼 메서드들...
}`
- 매퍼 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>`
- 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 매퍼 인터페이스를 사용하여 데이터베이스 쿼리를 호출할 수 있습니다.