[java] MyBatis에서의 연관 관계 매핑

MyBatis는 Java 개발자들이 데이터베이스와의 상호작용을 간소화하는 데 도움을 주는 인기 있는 오픈 소스 ORM(Object-Relational Mapping) 프레임워크입니다. 이 포스트에서는 MyBatis를 사용하여 엔티티 클래스 간의 연관 관계를 매핑하는 방법을 알아보겠습니다.

연관 관계 매핑이란?

연관 관계 매핑은 데이터베이스 테이블 사이의 관계를 애플리케이션 코드에서 사용할 수 있도록 매핑하는 과정을 말합니다. 이를 통해 한 객체가 다른 객체와의 관계를 정의하고 이를 데이터베이스에 매핑할 수 있습니다.

일대다(1:N) 연관 관계 매핑

1:N 관계는 한 개체가 여러 개체와 연관된 경우를 나타냅니다. 이러한 관계를 MyBatis에서 매핑하기 위해서는 자식 엔티티의 컬렉션을 부모 엔티티에 포함시켜야 합니다.

다음은 AuthorBook 엔티티 간의 1:N 관계를 MyBatis에서 매핑하는 예제입니다.

public class Author {
    private Long id;
    private String name;
    private List<Book> books;
    // getters and setters
}

public class Book {
    private Long id;
    private String title;
    private Long authorId;
    // getters and setters
}

MyBatis 매핑 구성

위의 예제에서 Author 엔티티의 books 필드는 Book 엔티티의 컬렉션을 가리킵니다. 이를 MyBatis 매퍼 XML 파일을 사용하여 매핑할 수 있습니다.

<resultMap id="authorMap" type="Author">
    <id property="id" column="author_id" />
    <result property="name" column="author_name" />
    <collection property="books" ofType="Book" select="selectBooksByAuthorId" column="author_id" />
</resultMap>

위의 매퍼 XML 파일에서 collection 요소의 property 속성은 부모 엔티티의 컬렉션 필드를 가리키고, ofType 속성은 자식 엔티티의 유형을 지정합니다. select 속성은 자식 엔티티를 검색하는 쿼리를 지정합니다.

결론

MyBatis를 사용하여 연관 관계를 매핑하면 복잡한 데이터베이스 상호작용을 간소화할 수 있으며, 객체 간의 관계를 더욱 자연스럽게 표현할 수 있습니다. 이를 통해 개발자는 더 직관적이고 유지보수하기 쉬운 코드를 작성할 수 있습니다.

참고 문헌:

이 포스트를 통해 MyBatis를 사용하여 1:N 연관 관계를 매핑하는 기본적인 방법을 학습할 수 있었습니다. MyBatis를 활용하여 복잡한 데이터베이스 모델을 객체 모델로 변환하는 데 유용하게 활용할 수 있을 것입니다.