您的位置:首页 > 其它

MyBATIS(即iBATIS)问题集

2012-10-16 17:30 239 查看
部门准备转做其他业务(小道消息啊,呵呵) ,技术选型方面准备考虑使用SpringMVC+Spring+iBATIS(第三版以后称为"MyBATIS",以下统一称为"iBATIS".如果第二版和第三版对比时,称第三版为"MyBATIS")。而且,部门准备请另外一部门同事来讲解一下iBATIS.借此机会,我看了一些iBATIS的资料,同时也整理出一些问题。发布出来,希望大家帮忙解答。(以后这些问题解决了,我也会发布一些文章来跟踪介绍。)背景介绍完毕,直接上题:

映射相关:

iBATIS中,主键映射使用的是。 Oracle、MySQL对主键自动增加实现方式不同。DB2不清楚如何实现。 在使用Oracle、DB2、MySQL中,该如何处理?

在iBATIS中如何继承关系如何实现?

iBATIS中有映射参数有两种形式:内联映射(inline mapping)和外部映射(external mapping)。这两个有什么区别?各自的优缺点是什么?使用时,改如何选择?

如何实现动态多列选择(dynamic-column list selection)?

在iBATIS的配置文件中,可以使用进行模型类名的简化。如果多人开发的话,会增加命名冲突等问题发生的可能性。有没有一个最佳实践,来提高重用性,同事规避这些问题的发生?

使用过iBATIS调用存储过程吗?该如何整?

内部实现机制

据了解iBATIS中没有为update加锁。如何解决在高并发情况下的同步问题?

iBATIS使用单一一个Jar包也能实现功能。不过,据了解如果使用cglib这个运行时代码生成库,可以提延迟加载的性能。这个的实现原理是什么?这个增加框架是否推荐使用?为什么?

向数据库新增数据时,保存后,对象的ID是否会自动的回填到原来的对象中?

缓存相关:

据了解iBATIS中有四种内置MEMORY、LRU、FIFO、OSCACHE高速缓存类型。如果这四个缓存类型不满足需求。如何实现扩展高速缓存,实现自己的缓存类型?

在配置缓存时,iBATIS清除缓存是把所有的缓存都清楚还是只清楚一个实例模型相关的?

iBATIS的缓存对于开发人员来说是否是透明的?需要自己编写和缓存相关的代码吗?

iBATIS中和高速缓存策略相关的最佳实践是什么?能否分享一下?

优化相关:

iBATIS中也可以懒加载。如何实现"按需加载"?

iBATIS中有哪些优化策略?有没有这方面的最佳实践?

iBATIS的事务管理器有JDBC、JTA、EXTERNAL三种。如果使用Spring来管理事务的话该如何配置?使用EXTERNAL?

实践相关:

能否用实例说明一下 "N+1查询"问题 ?如何解决"N+1查询"问题?

iBATIS的动态SQL效率如何?如果过多的使用动态SQL,是否会影响效率?

iBATIS的最佳实践都有哪些?





其他

为什么不使用MyBATIS(iBATIS的第三版)?

iBATIS都有哪些扩展点?会对我们的开发工作有何促进?

与Hibernate对比的一些问题

Hibernate中,模型对象有瞬时、持久化、脱管和移除四个生命周期。iBATIS的对象有生命周期吗?分别是什么?.

Hibernate中有OpenViewInSession模式,用来应对Session失效(或者是过期)。iBATIS下有这方面的问题吗?如何应对这个问题?

在Hibernate中有一级缓存、二级缓存等。在iBATIS中是否也有与Hibernate对应的缓存架构和概念?

Hibernate中有乐观锁和悲观锁。在iBATIS中是否也有这方面的机制?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐