Ehcache Controller class
package com.ibatis.sqlmap.engine.cache.EhCacheController;
import java.net.URL;
import java.util.Properties;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
import com.ibatis.sqlmap.engine.cache.CacheController;
import com.ibatis.sqlmap.engine.cache.CacheModel;
/**
* EhCache Implementation of the {@link com.ibatis.sqlmap.engine.cache.CacheController} interface to be able to use
* EhCache as a cache implementation in iBatis. You can configure your cache model as follows, by example, in your
* sqlMapping files:
* <cacheModel id="myCache" type="nl.rabobank.springproject.ibatis.EhCacheController" readOnly="true" serialize="false">
* <property name="configFile" value="/path-to-ehcache.xml"/>
* </cacheModel>
* Alternatively, you can use a type alias in your type attribute and defining the class with a
* <TypeAlias> declaration, see iBatis documentation on how to do this.
*/
public class EhCacheController implements CacheController {
/** The EhCache CacheManager. */
private CacheManager cacheManager;
/**
* Flush a cache model.
* @param cacheModel - the model to flush.
*/
public void flush(CacheModel cacheModel) {
getCache(cacheModel).removeAll();
}
/**
* Get an object from a cache model.
* @param cacheModel - the model.
* @param key - the key to the object.
* @return the object if in the cache, or null(?).
*/
public Object getObject(CacheModel cacheModel, Object key) {
Object result = null;
Element element = getCache(cacheModel).get(key);
if (element != null) {
result = element.getObjectValue();
}
return result;
}
/**
* Put an object into a cache model.
* @param cacheModel - the model to add the object to.
* @param key - the key to the object.
* @param object - the object to add.
*/
public void putObject(CacheModel cacheModel, Object key, Object object) {
getCache(cacheModel).put(new Element(key, object));
}
/**
* Remove an object from a cache model.
* @param cacheModel - the model to remove the object from.
* @param key - the key to the object.
* @return the removed object(?).
*/
public Object removeObject(CacheModel cacheModel, Object key) {
Object result = this.getObject(cacheModel, key);
getCache(cacheModel).remove(key);
return result;
}
/**
* Configure a cache controller. Initialize the EH Cache Manager as a singleton.
* @param props - the properties object continaing configuration information.
*/
public void setProperties(Properties props) {
URL url = getClass().getResource(props.getProperty("configFile"));
cacheManager = CacheManager.create(url);
}
/**
* Gets an EH Cache based on an iBatis cache Model.
* @param cacheModel - the cache model.
* @return the EH Cache.
*/
private Cache getCache(CacheModel cacheModel) {
String cacheName = cacheModel.getId();
Cache cache = cacheManager.getCache(cacheName);
return cache;
}
/**
* Shut down the EH Cache CacheManager.
*/
public void finalize() {
if (cacheManager != null) {
cacheManager.shutdown();
}
}
}
A Sample sqlMap 配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="myNamespace">
<!-- Use type aliases to avoid typing the full classname every time. -->
<typeAlias alias="MyPojo" type="nl.myproject.MyPojo"/>
<typeAlias alias="MapCacheController" type="com.ibatis.sqlmap.engine.cache.EhCacheController"/>
<cacheModel id="MyPojoCache" type="MapCacheController" readOnly="true" serialize="false">
<property name="configFile" value="/ehcache.xml"/>
</cacheModel>
<resultMap id="ResultQueryMap" class="MyPojo">
...property mappings go here...
</resultMap>
<select id="getMyPojoList" resultMap="ResultQueryMap" cacheModel="MyPojoCache">
...select query to get your pojo from the database goes here...
</select>
</sqlMap>
A sample ehcache 配置文件
<ehcache>
...put your default cache here...
<cache
name="myNamespace.MyPojoCache"
maxElementsInMemory="5"
eternal="false"
timeToLiveSeconds="60"
overflowToDisk="false"
memoryStoreEvictionPolicy="LRU"/>
</ehcache>
总结:
1.你可以建多个CacheModel 在sqlmap的配置文件中,然后指定到同一个cacheController.
2.记住不要忘了 设置 cacheModelsEnabled=true (在sqlmap的<setting>)否则你的cache就根本不会去作用。
分享到:
相关推荐
这个"spring+ibatis+ehcache整合例子"是一个完整的示例项目,展示了如何将这三个框架无缝集成到一个基于MySQL数据库的应用中。下面将详细介绍这三个框架及其整合的关键点。 **Spring框架** Spring是一个全面的企业...
标题中的"spring.struts,ibatis集成包"是指将Spring、Struts和iBATIS这三种技术框架整合在一起的软件包。这种集成旨在提供一个高效、灵活且可扩展的Web应用程序开发环境。Spring作为核心框架,负责管理应用的业务...
相比之下,iBatis虽然也可以与Spring框架集成,但在集成的深度和广度上不如Hibernate。 9. **与JBoss等容器的兼容性**:由于Hibernate遵循JSR 250规范,因此它能够很好地与其他Java EE容器(如JBoss)进行集成。...
4. **ORM集成**:Spring可以很好地整合Hibernate等ORM框架,简化数据库操作。 这三个框架组合使用,可以构建出高效、可维护的Java企业级应用,尤其在北京、杭州等大城市,它们在面试中经常被提及,对于开发者来说,...
3. **iBatis集成** - **SqlSessionFactory**:iBatis的核心是`SqlSessionFactory`,它根据配置文件生成`SqlSession`,用于执行SQL。在Spring中,可以使用`SqlSessionFactoryBean`来创建`SqlSessionFactory`。 - **...
ORM(对象关系映射)集成中,Hibernate相关的jar(ehcache.jar、hibernate2.jar、odmg.jar)用于Spring的Hibernate支持,而iBATIS(ibatis-common.jar、ibatis-sqlmap.jar、ibatis-sqlmap-2.jar)则用于iBATIS集成。...
springmvc4.3.3和mybatis3.4.1集成最新全部jar包,还包含了其他一些常用的jar包,很全,已经在项目中验证过。 lib/antlr-2.7.2.jar lib/aopalliance-1.0.jar lib/asm-3.3.1.jar lib/aspectjweaver-1.6.5.jar ...
使用 Spring 的 iBATIS 集成类时,这些文件不可或缺;如果使用 JDBC 或其它 ORM 工具如 Hibernate 或 JDO,则你的应用不需要这些文件。 itextitext-1.02b.jar Spring 使用 iText 提供 web 层的 PDF 支持。只有你的...
- **说明**:使用Spring的iBATIS集成类时,这些文件不可或缺。如果你使用JDBC或其他ORM工具,例如Hibernate或JDO,则无需包含这些文件。 13. **iText** - **JAR文件**:itext-1.02b.jar - **说明**:Spring使用...
4. **自定义缓存实现**:创建一个实现`org.apache.ibatis.cache.Cache`接口的类,该类将负责与Redis的交互,包括读写操作。 5. **配置自定义缓存**:在`mybatis-config.xml`中注册自定义的Redis缓存实现,通过`...
- **说明**: 使用Spring的iBATIS集成类时,需要这些文件;若使用JDBC或其他ORM工具如Hibernate或JDO,则无需包含它们。 ### 13. iText - **JAR文件**: itext-1.02b.jar - **说明**: Spring通过iText提供web层的PDF...
4. **数据访问集成**:Spring 模块提供了对多种数据访问技术的集成,包括JDBC、Hibernate、iBatis等ORM框架,以及JPA规范。这些集成使得开发者可以方便地在Spring应用中使用这些技术,进行数据库操作,同时利用...
3. **Ehcache与Spring注解配置**:Ehcache是一个流行的Java缓存框架,通过Spring注解配置,可以在Spring应用中轻松集成和管理缓存,提高应用程序性能。注解方式使得配置更加简洁,减少了XML配置文件的复杂性。 4. *...
如Tomcat(Web服务器),JSP(Java Server Pages),Struts1,Spring,Hibernate,iBatis,Lucene(全文搜索引擎),Velocity(模板引擎),Ajax(异步JavaScript和XML),Ehcache(缓存系统),以及URLRewrite(URL...
7. **基于EHCache的缓存管理机制**:通过高效的缓存策略,显著提升了系统的响应速度与性能。 8. **基于Quartz的任务调度管理**:支持定时任务的执行,增强了系统的自动化能力。 9. **基于Log4j的日志管理**:通过...
Spring ORM模块就是Spring框架对ORM技术的支持,它提供了与Hibernate、JPA、iBatis等主流ORM框架的集成,简化了数据访问层的开发。 二、Spring ORM核心组件 1. Hibernate支持:Spring提供了全面的Hibernate支持,...
Spring Email模块提供了发送邮件的功能,支持HTML邮件、附件等,可以方便地集成到应用中。 8. 用户界面: JSP 2.0 和 FreeMarker 是模板引擎,用于生成动态网页内容。JQuery是一个强大的JavaScript库,简化了DOM...
8. `spring-orm.jar`:扩展了DAO特性,支持iBATIS,JDO,OJB,TopLink,但不包含Hibernate,因为Hibernate有自己的独立jar包。 9. `spring-remoting.jar`:提供EJB,JMS,远程调用(RMI,Hessian,Burlap,...
3. **数据访问集成**:Spring 提供了对多种数据库访问技术的支持,包括 JDBC、Hibernate、JDO 和 iBATIS 等。它通过提供模板类和回调接口简化了数据访问操作,减少了冗余代码,并支持事务管理。 4. **MVC(Model-...