데브허브 | DEVHUB | MyBatis resultMap과 associationMyBatis resultMap과 association
- MyBatis
resultMap은 데이터베이스 쿼리 결과를 자바 객체로 유연하게 매핑하여 객체-관계 불일치를 해소하는 핵심 기능입니다. 🗺️
resultMap의 기본 사용법은 <select> 태그 내 resultMap 속성으로 ID를 참조하고, <result> 태그를 사용하여 쿼리 칼럼과 자바 객체 프로퍼티를 매핑하는 것입니다. 🔗
collection 태그는 부모 객체 내에 자식 객체들의 리스트를 포함시킬 때 사용하며, 조인 쿼리 결과의 중복 데이터를 효율적으로 객체화하는 데 유용합니다. 📚
collection 태그는 property로 부모 객체의 리스트 필드명, ofType으로 리스트 요소의 자바 타입을 지정하며, <id> 태그로 컬렉션 내 유일성을 명시하는 것이 중요합니다. 📝
association 태그는 부모 객체 내에 단일 자식 객체를 포함시킬 때 사용하며, 데이터베이스의 분리된 칼럼들을 자바의 단일 객체로 구성(임베디드 객체)하는 데 효과적입니다. 🤝
association은 마틴 파울러의 '식별자 필드'와 '포함(Embedded Value)' 패턴과 연결되며, 데이터베이스 칼럼을 자바 객체 내의 응집력 있는 단일 객체로 매핑하는 개념을 구현합니다. 💡
association 태그는 property로 부모 객체의 단일 객체 필드명, javaType으로 해당 객체의 자바 타입을 지정하며, <id> 태그는 collection과 달리 필수는 아닐 수 있습니다. 🧩
- MyBatis는 객체 인스턴스화 및 데이터 채우기를 위해 기본 생성자와 Getter/Setter를 활용하므로, 사용자 정의 생성자가 있을 경우 명시적인 기본 생성자 추가가 필수적입니다. 🏗️