iBatis ResultMap 상속

Java/iBatis 2012. 4. 18. 11:34 Posted by 퓨어레드

iBatis ResultMap 상속

-       개발팀 남한희 대리

1.     상속과 구성의 차이점을 명확하게 알자!!

A.     상속은 상위를 포함한 하위 확장 개념

B.      구성은 상위를 내포한 포함 개념 (말이 이상하다 따로 설명해야 할 듯..)


2.     ResultMap 상속의 개념

A.     ResultMap 을 상속하는 개념은 비슷한 기존 ResultMap 에서 확장된 ResultMap 이 있을 경우,  코드량을 줄이고 기존 ResultMap 에서 확장된 ResultMap 을 사용 할 경우 사용함


3.     예시

A.     코멘트, 첨부파일, 도메인 모델 등에서 사용

                         i.         코멘트 : 코멘트의 경우 보통 일련번호, 작성자, 내용 등 많은 내용이 비슷하고 이에 FK만 달라지는 경우가 많다. 이럴 경우 공통 ResultMap 에 들어가는 필드는 테이블에 맞춰주고 달라지는 부분만 상속으로 처리한다. (첨부파일도 마찬가지)

                        ii.         도메인 모델 : 기본 ResultMap 을 만들고 추가되는 Domain 모델이 있다면 이 항목을 기본 ResultMap 을 상속받고 추가되는 Domain 모델을 확장하여 ResultMap 을 구성한다.
도메인 모델에선 상속된 ResultMap 으로 데이터를 주입받아 속도 개선에 도움을 준다
.


4.     문법

A.     상속 받는 ResultMap extends=”상위ResultMapID”

B.      기본 ResultMap
<resultMap class="ResellerVo" id="ResellerRm">
<
result property="resellerID" column="resellerID" jdbcType="VARCHAR" />
</resultMap>

C.      ResultMap 상속
<resultMap class="ResellerDm" id="ResellerDmRm" extends="ResellerRm">
<
result property="companys" column="{resellerID=resellerID}" select="company.getsGwCompany" />
</resultMap>

D.     기타

                         i.         하위 ResultMap  에 들어가는 Vo Class 가 상위 ResultMap 에 들어가는 Vo Class 와 꼭 상속 관계일 필요는 없다. (ResultMap 에서만 상속관계이지 실제 클래스가 상속관계일 필요는 없다는 것)


 

 

iBatis 하위 ResultMap 결정

 

5.     선택 가능한 하위 ResultMap

A.     특정 조건으로 하위 ResultMap 을 결정 할수도 있다.

B.      조건은 상위 ResultMap 에서 결정한다.

C.      특정 컬럼의 값으로 하위 ResultMap 을 결정한다.

6.     문법

A.     <resultMap class="ResellerVo" id="ResellerRm">
<result property="resellerID" column="resellerID" jdbcType="VARCHAR" />         
<result property="resellerName" column="resellerName" jdbcType="VARCHAR" />
<result property="regDate" column="regDate" jdbcType="VARCHAR" />

<discriminator column="TYPE" javaType="string">
<subMap value="Book" resultMap="ResellerRm2" />
<subMap value="News" resultMap="ResellerRm3" />
</discriminator>


</resultMap>

B.      Select 가 된 컬럼중 TYPE 이라는 컬럼의 값이 Book 이면 ResellerRm2 을 선택하고
News
라면 ResellerRm3 를 선택함


C.      하위 Resultmap 을 결정 구분을 사용 할 경우 구분 할 수 있는 컬럼이 있어야 한다.

D.     만약 구분 할 수 있는 컬럼이 없다면 alias 를 이용한다.

                         i.         Select field1, field2, field3, ‘Book’ as TYPE FROM TestTable

 

 

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

iBatis resultMap 의 select 중 column 을 여러 컬럼을 주고 싶을 때...  (0) 2012.06.13
iBatis Cache 모델  (0) 2012.04.18
iBatis RowHandler  (0) 2012.04.18