Ibatis的延迟加载的配置和引起的一些有关问题

Ibatis的延迟加载的配置和引起的一些问题
1.在sqlMapConfig.xml中,加入:

<sqlMapConfig>

    <settings lazyLoadingEnabled="true" enhancementEnabled="true"/>

    <sqlMap resource=""/>

</sqlMapConfig>

2.在CardInfoMap.xml中,加入
<resultMap id="cardInfo_result" class="cardInfo">
  <result property="cardType" column="CARD_TYPE_ID" select="CardType_findCardType"/>
</resultMap>
当然,CardTypeMap.xml和CardInfoMap.xml都要有。

3.这样,在代码中,就可以方便地访问卡信息的卡类型了。如:

CardInfo cardInfo = cardManager.findCardInfo(cardId);

String cardTypeName = cardInfo.getCardType().getName();

不过,利用延迟加载带来一些和平时编码不一样的地方:

1. cardInfo.getCardType()永远不会等于null,它里面实际上是一个代理类,所以如果要判断cardInfo.getCardType()是否为null,没法判断,因此,需要转变一下思路,可以判断cardInfo.getCardType().getId()(这个ID是PK)是否为null来判断。

2. 利用Ibatis延迟加载,cardInfo.getCardType()里面的代理类会,占用内存非常大。(这个可以用SizeOf测试出来)