[Mybatis] 네임스페이스(Namespaces) 예제

MyBatis에서 네임스페이스(Namespaces)는 매퍼 파일과 그 안의 SQL 쿼리들을 그룹화하고 구분하기 위해 사용됩니다. 각 매퍼 파일은 자체의 네임스페이스를 가질 수 있으며, 이를 통해 다른 매퍼와 중복되지 않는 고유한 식별자를 부여할 수 있습니다.

예제: 네임스페이스 사용

  1. 매퍼 인터페이스와 XML 파일 작성:

먼저, 매퍼 인터페이스와 그에 해당하는 XML 파일을 작성합니다.

// UserMapper.java
public interface UserMapper {
    User getUserById(Long userId);
}` 
<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
    <select id="getUserById" resultType="User">
        SELECT * FROM users WHERE user_id = #{userId}
    </select>
</mapper>` 
  1. Java 코드에서 네임스페이스 활용:

매퍼 인터페이스와 XML 파일의 네임스페이스를 일치시킵니다.

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);
            
            Long userId = 1L;
            
            // 네임스페이스를 사용하여 쿼리 호출
            User user = userMapper.getUserById(userId);
            
            System.out.println("User: " + user);
        }
    }
}` 

위의 예제에서는 UserMapper 인터페이스와 UserMapper.xml 파일이 동일한 네임스페이스인 “com.example.UserMapper”를 사용하고 있습니다. 이렇게 네임스페이스를 일치시키면 MyBatis가 올바른 매퍼 파일을 찾아 사용할 수 있습니다.

네임스페이스를 사용하면 다른 매퍼와의 충돌을 방지하고 관련된 쿼리를 그룹화하여 유지 및 관리가 용이해집니다. 그리고 MyBatis에서는 여러 개의 매퍼를 사용하여 복잡한 SQL 작업을 수행하는데, 이때 네임스페이스는 각각의 매퍼를 식별하는 데 중요한 역할을 합니다.