首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

ibatis 应用

2012-09-05 
ibatis 使用最近又看了遍iabtis 简单记录一下!??1.缓存: Memory cache 实现使用reference类型来管理cache

ibatis 使用

最近又看了遍iabtis 简单记录一下!

?

?1.缓存: Memory cache 实现使用reference类型来管理cache的行为,垃圾回收器根据reference中的了类型判断是否要回收cache中的数据,适用于没有同意对象重用模式的应用,或内存不足的应用 reference-type : strong ,soft ,weak s

trong:基于传统的java对象的引用机制,必须使用显示的晴空缓存(到了刷新缓存的时间,或者执行了更新等操作,或者代码里做了清除),会一直在内存中。 适用于内存充足的情况。?soft:只有JVM内存不足的情况,才会对缓冲池中的数据进行回收。适用与内存较充足 并且并发量不是很多的情况下。 weak:当jvm启动垃圾回收的时候,将被回收。 这三种的话,weak为最佳选择们可以提高查询的性能,但对于当前不被使用的查询结果数据,将被清除以释放。

?

LRU cache:近期最少使用原则来确定如何从cache中清除对象cache-size的属性值必须是整数,代表同事存在cache中的最大数目。

?FIFO cache: 实现用“先进先出”原则来确定如何从缓存中清除,对于短时间内持续引用的特定查询后很可能不再使用的情况。

?OScahce:缓存引擎插件,具有很好的配置性,分布式,灵活性。可以缓存任何对戏那个,拥有全面的API,永久缓存,支持集群。

cacheModel缓存的是statement,即key是跟sql语句相关,如果sql语句不同,将产生两个cache。 cache-size设置的大小一直是我纠结的事情,如果sql是不变的,我认为是产生的一个list的对象保存到缓存中,所以cache-size 可以设置成为1

?

2.配置: 对于存储过程之外的statement 而言,建议使用parameterClass作为参数配置方式;对于返回结果,如果是select语句,建议使用resultClass进行定义。

?

3.ibatis后台调试日志: log4j.logger.java.sql.PreparedStatement=Debug

?

4.一对多关联查询,观察日志发现,sql会首先将所有数据查出来,然后再分别查,开销很大,可以使用存储过程来规避。

?

5.延迟加载: 执行sql时,只是想数据库发送了一条sql,而用于获取子记录的sql。只有在真正访问其他表对象时时,才开始执行。 lazyLoadingEnabled 是否使用延迟加载 enhancementEnabled 设定是否启用字节码强化执行

?

6.动态映射 <dynamic prepend="WHERE"><isnotempty prepend="AND" property="name"> (name lika #name#) </isnotempty></dynamic> 判定条件:一元判定:isEmpty ,isnotEmpty,isNull,isnotNull 二元判定:两个判定参数,一个是属性一个是判定值 isEqual ,isGreaterThan, isLessThan

?

7.事务管理: ibatis 自动化的事务提交机制,根据当前的调用环境,自动判断是否需要自动提交。 JDBC事务由Connection管理,事务周期限于Connection的生命周期。 JTA事务由JTA容器实现,对加入事务的众多Connection进行调度。

?

附件中为学习的ibatis文章。

热点排行