Some puzzles

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

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

2. N+1查询问题,Product 和 Category 是 N V 1的关系,如果

如上诉代码所示,取得一个product所属的Category时,需要再执行另一条SQL语句。那么,取得同一个分类下的多个产品,那么肯定是至少执行N+N次SQL语句的。为什么是说N+1次呢?已经考虑了Cache SQL语句么?比较疑惑。

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

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

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

todo:写一个应用,将IBatis用上去看看。






你可能感兴趣的:(iBATIS,SQL,DAO,Cache)