映射相关:
- iBATIS中,主键映射使用的是<selectKey>。 Oracle、MySQL对主键自动增加实现方式不同。DB2不清楚如何实现。 在使用Oracle、DB2、MySQL中,该如何处理?
- 在iBATIS中如何继承关系如何实现?
- iBATIS中有映射参数有两种形式:内联映射(inline mapping)和外部映射(external mapping)。这两个有什么区别?各自的优缺点是什么?使用时,改如何选择?
- 如何实现动态多列选择(dynamic-column list selection)?
- 在iBATIS的配置文件中,可以使用<typeAlias>进行模型类名的简化。如果多人开发的话,会增加命名冲突等问题发生的可能性。有没有一个最佳实践,来提高重用性,同事规避这些问题的发生?
- 使用过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中是否也有这方面的机制?