iBatis缓存的使用方法及解释 :以iBatis2.3为例,做以下配置即可实现对某些查询进行缓存
1、<settings lazyLoadingEnabled="false" cacheModelsEnabled="true" enhancementEnabled="true" />
注释:
lazyLoadingEnabled 延迟加载数据;
cacheModelsEnabled 全局性启用或关闭SqlMapCilent cache缓存;
enhancementEnabled 运行时,字节码增强
2、在sqlMap文件中加入cacheModel的配置:
<cacheModel id="model-cache" type="MEMORY" readOnly="true" >
<flushInterval seconds="60"/>
<flushOnExecute statement="insertProduct"/>
<flushOnExecute statement="updateProduct"/>
<flushOnExecute statement="deleteProduct"/>
<property name="size" value="1000" />
</cacheModel>
注意:如果在sqlMapConfig里面设置了useStatementNamespaces="true",那么上面的flushOnExecute中的statement里面需要带上namespace,如<flushOnExecute statement="Product.insertProduct"/>,如果useStatementNamespaces="false",则可以直接按上面的写。
注释:
cacheModel的id属性用于后面的statement引用;
type属性标识采用何种cache方式:
MEMORY---使用 reference 类型来管理 cache 的行为。垃圾收集器可以根据 reference类型判断是否要回收 cache 中的数据。MEMORY实现适用于没有统一的对象重用模式的应用,或内存不足的应用
LRU---用“近期最少使用”原则来确定如何从 Cache 中清除对象,当 Cache溢出时,最近最少使用的对象将被从 Cache 中清除
FIFO---用“先进先出”原则来确定如何从 Cache 中清除对象。当 Cache 溢出时,最先进入 Cache 的对象将从 Cache 中清除。
OSCACHE---是OSCache2.0缓存引擎的一个 Plugin。它具有高度的可配置性,分布式,高度的灵活性。
flushInterval 属性是配置自动更新缓存的周期,可以是hours,minutes,seconds或milliseconds
flushOnExecute这是标识什么时候触发更新,statement的名字就是后面的增删改语句的statement的id
3、配置需要进行cache的sql statment:
<statement id="getProductList" parameterClass="int" cacheModel="model-cache">
select * from PRODUCT where PRD_CAT_ID = #value#
</statement>
注释:cacheModel="model-cache"---指定该语句执行上面定义的model-cache缓存
相关推荐
### ibatis和Hibernate的简单介绍 #### 一、ibatis简介 ibatis是Apache软件基金会的一个开源项目,它提供了一种轻量级的Java持久层框架。ibatis的核心功能是将SQL语句与Java代码分离,使开发人员可以更加专注于...
Hibernate支持事务管理,缓存机制,以及复杂的查询语言HQL,使得开发者能更专注于业务逻辑,而非底层的数据库交互。 然后是iBatis,它介于传统JDBC和完整的ORM框架之间,提供了一种灵活的SQL映射方式。iBatis的核心...
6. **缓存支持**:为了提高性能,Ibatis 提供了本地缓存和二级缓存机制,可以缓存查询结果,减少不必要的数据库访问。 **与Hibernate的比较:** 虽然Hibernate是一款强大的ORM框架,提供了全自动的数据映射和对象...
iBATIS的缓存机制与其他ORM框架(如Hibernate)有所不同,它更侧重于SQL级别的缓存,而不仅仅是对象级别的缓存。 #### 三、配置iBATIS缓存 **3.1 cacheModel标签** 用于配置iBATIS的缓存模型。 - **3.1.1 ...
Hibernate3版本包含了实体管理、会话管理、缓存机制、查询语言HQL等特性,极大地简化了数据库操作,提高了开发效率。 3. **Struts.jar**:这是Struts 1框架的库,一个基于MVC(Model-View-Controller)设计模式的...
这个压缩包中的"jsp-struct-hibernate-ibatis好书和资源"可能包括了教程、示例代码、最佳实践指南等,可以帮助学习者系统地了解并掌握这四个技术的用法。对于初学者,可以从基础概念和安装配置开始,逐步学习如何...
iBATIS旨在提供一种简单、灵活的方式来处理数据库操作,它既不像Hibernate那样完全对象关系映射(ORM),也不像传统的JDBC编程那么繁琐。 2. **环境搭建**:包括安装配置JDK、设置开发环境(如Eclipse或IntelliJ ...
例如,对于某个特定的DAO,可以有两个实现版本:一个使用iBATIS SQL Maps框架将对象持久化到数据库,另一个则使用Hibernate框架。或者,有一个DAO为另一个DAO提供缓存服务。根据具体场景(如数据库性能受限或内存...
标题中的"springmvc_hibernate_ibatis_jdbc"指的是一个整合了SpringMVC、Hibernate、iBatis和JDBC这四种关键技术的Java应用框架。这个框架旨在提供一个全面且强大的解决方案,便于开发人员进行Web应用程序的构建。 ...
ibatis同样提供了事务管理和缓存功能,但对数据库的抽象程度低于Hibernate。 **配置和使用步骤:** 1. 创建SqlMapConfig.xml配置文件,定义数据源、事务管理器等。 2. 编写POJO类和Mapper XML文件,XML文件中定义...
3. **缺乏高级特性:**相较于 Hibernate 提供的高级特性如懒加载、缓存管理等,iBatis 在这些方面相对简单。 #### 总结 1. **学习曲线:**iBatis 相比 Hibernate 学习成本更低。 2. **资源消耗:**iBatis 在资源...
### ibatis与hibernate的区别 #### 一、概述 在Java开发领域中,持久化技术是连接应用程序与数据库之间的重要桥梁。其中,ibatis(现称为MyBatis)和Hibernate作为两种主流的对象关系映射(Object Relational ...
其主要特性包括:对象-关系映射、事务管理、第二级缓存支持和HQL(Hibernate查询语言)。 **iBatis** 则是一个轻量级的数据访问层框架,它介于Java代码和SQL之间,提供动态SQL支持。与Hibernate不同,iBatis并不...
6. **iBatis与Hibernate的对比**:虽然两者都是ORM框架,但iBatis更注重SQL的灵活性,而Hibernate则提供了全自动的对象关系映射,牺牲了一定的SQL控制权。 7. **传智播客的iBatis教程**:通常会包含iBatis的安装...
2. 定义POJO(Plain Old Java Object)和映射文件,使用工具如muddlegen和hibernate-extensions生成。 3. 编写DAO(Data Access Object),为每个表提供增删改查的方法。 **Ibatis** 相比Hibernate更为灵活,它是一...
DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled=...
4. 缓存和事务管理:两者都支持缓存和事务,但Hibernate内置了更强大的管理机制。 在选择Ibatis还是Hibernate时,应考虑项目的具体需求、团队的技术背景和性能要求。对于需要高度控制SQL的项目,或者对性能有严格...