본문 바로가기

Programming/iBatis

ClassMap을 이용한 복합(Complex) Properties

ClassMap을 이용한 복합(Complex) Properties

이것은 선호하는 데이터와 클래스를 로드하는 방법을 알고있는 맵핑된 statement와 함께 관련된 resultMap프라퍼티에 의해 복합타입의 프라퍼티(사용자에 의해 생성된 클래스)를 자동적으로 생성하는 것은 가능하다. 데이터베이스내 데이터는 언제나 복합프라퍼티는 관계의 “many side”로부터이고 프라퍼티 자신은 관계의 “one side”로 부터이다라는 것을 고정하는 클래스에서 1:1관계 또는 1:M관계를 통해 표현된다. 


<resultMap id=”get-product-result” class=”com.ibatis.example.Product”>

<result property=”id” column=”PRD_ID”/>

<result property=”description” column=”PRD_DESCRIPTION”/>

<result property=”category” column=”PRD_CAT_ID” select=”getCategory”/>

</resultMap>


<statement id=”getProduct” parameterClass=”int” resultMap=”get-product-result”>

select * from PRODUCT where PRD_ID = #value#

</statement>


<resultMap id=”get-category-result” class=”com.ibatis.example.Category”>

<result property=”id” column=”CAT_ID”/>

<result property=”description” column=”CAT_DESCRIPTION”/>

</resultMap>


<statement id=”getCategory” parameterClass=”int” resultMap=”get-category-result”>

select * from CATEGORY where CAT_ID = #value#

</statement>


위 예제에서 Product의 인스턴스는 Category타입의 category를 호출하는 프라퍼티를 가진다. 

Category는 복합사용자타입이기 때문에 JDBC는 그것을 생성하는 방법을 가지지 않는다. 

프라퍼티 맵핑과 함께 다른 맵핑된 statement를 관련시킴으로써 우리는 그것을 생성하기 위한 SQL Map엔진을 위해 충분한 정보를 제공한다. 

getProduct를 수행하면 get-product-result result map이 PRD_CAT_ID칼럼내 반환되는 값을 사용해서 getCategory을 호출할것이다. 

get-category-result result map은 Category를 초기화할것이고 그것을 생성한다. 전체 Category인스턴스는 Product의 category프라퍼티로 셋팅한다.

'Programming > iBatis' 카테고리의 다른 글

iBatis - selectKey (자동생성키)  (0) 2012.12.27
iBatis - Iterate  (1) 2012.11.16
QueryForList와 QueryForMap의 차이 예  (0) 2012.04.09
QueryForObject, List, Map  (0) 2012.04.09
iBatis - 동적쿼리  (0) 2012.04.06