Some puzzles

记录一些在IBatis中不是很舒服的地方:(随时保持更新)

1. 在映射文件中配置了select, update, insert, delete等语句的id,由我们在配置文件中指定。但是,我们在dao方法中的相关方法要记住这些id,如果引用不正确的话会发生错误。

2. N+1查询问题,Product 和 Category 是 N V 1的关系,如果
[code]<result property=”category” column=”PRD_CAT_ID” select=”getCategory”/>[/code]
如上诉代码所示,取得一个product所属的Category时,需要再执行另一条SQL语句。那么,取得同一个分类下的多个产品,那么肯定是至少执行N+N次SQL语句的。为什么是说N+1次呢?已经考虑了Cache SQL语句么?比较疑惑。

而避免这个问题,就是将两次查询变成一次查询,也就是使用联合查询就OK了。

3. 延迟加载和联合查询的取舍问题。如果说应用中不会一下子就要将Product所属的分类显示出来,那么或许我们可以考虑延迟加载的方式。其含义就是只有实际用到product的Category信息的时候,我们才去数据库中将这个product的信息取出来。代码比较简单。

ok,应该都不是太大问题。另外一点,看的文档是2004年的版本,不知道和现在的IBatis版本差别多少,这是个问题。总之,在没有实际应用之前,不要太乐观,谨慎小心,做好记录,以便找到回来的路。

todo:写一个应用,将IBatis用上去看看。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值