- 浏览: 4405215 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (163)
- 职场 && 心情 (22)
- Java/Basic (17)
- Java/Compression (7)
- Java/Security (20)
- Java/Maven (3)
- Java/Cache (11)
- Eclipse (4)
- Spring (19)
- ORM/Hibernate (2)
- ORM/iBatis (3)
- DB/NoSQL (11)
- DB/MySQL (7)
- DB/MS SQL Server (4)
- OS/Linux (11)
- OS/Mac (7)
- C/C++ (4)
- Server Architecture/Basic (13)
- Server Architecture/Distributed (17)
- Moblie/Andriod (2)
- WebService (3)
- Objective-C (1)
- Html (1)
- 设计模式 (1)
- Scala (0)
- Kafka (1)
最新评论
-
w47_csdn:
证书安装:在"浏览"选项中选择" ...
Java加密技术(九)——初探SSL -
w47_csdn:
spiritfrog 写道你好,我按照你的步骤,tomcat中 ...
Java加密技术(九)——初探SSL -
liuyachao111:
11楼说的对 用@ControllerAdvicepublic ...
Spring 注解学习手札(八)补遗——@ExceptionHandler -
irayslu:
作者你好, 我把你的源码放在jdk6, jdk7 中运行正常, ...
Java加密技术(五)——非对称加密算法的由来DH -
夏季浅忆-卖小子:
为什么不能解压rar格式的压缩包呢
Java压缩技术(三) ZIP解压缩——Java原生实现
项目完结,整理一些技术方面的相关收获。
已经记不得EhCacheController这个实现类最早来自于那里了,总之稍加修改后非常有效果,大家就这么用了,感谢最初开源的那位兄弟。这里,主要是做个记录,为以后类似扩展(譬如Memcached)做个准备。
iBatis提供CacheController接口,用于实现第三方缓存架构的扩展。
这里以iBatis 2.3.0,EhCache 1.2.3版本为基础,构建iBatis+EhCache实现。
EhCacheController类:
这里默认在根目录下获取ehcache.xml文件,可以通过cacheModel配置进行修改。
在SqlMapConfig.xml文件中配置一个别名,作为全局变量,供其余SqlMap使用。
顺便提一句,要使用缓存注意SqlMapConfig.xml文件中settings节点配置cacheModelsEnabled为true!
接下来,在SqlMap.xml文件中的cacheModel中
如果要变更ehcache.xml文件路径为/config/ehcache.xml,可以在上述节点中下入如下代码:
然后,就可以通过ehcache.xml控制ehcache缓存了!
举例说明iBatis SqlMap & ehcahce.xml,以免有些兄弟混淆!
以Account类为示例,在SqlMap中的配置为:
注意:
<select
id="readByAccountName"
parameterClass="string"
resultMap="accountMap"
cacheModel="cache">
这里的cacheModel="cache",对应的在ehcache.xml中就应该是:
因为,我使用了useStatementNamespaces="true"
自己开发的EhCacheController,非自带。。。。
已经记不得EhCacheController这个实现类最早来自于那里了,总之稍加修改后非常有效果,大家就这么用了,感谢最初开源的那位兄弟。这里,主要是做个记录,为以后类似扩展(譬如Memcached)做个准备。
iBatis提供CacheController接口,用于实现第三方缓存架构的扩展。
这里以iBatis 2.3.0,EhCache 1.2.3版本为基础,构建iBatis+EhCache实现。
EhCacheController类:
package com.ibatis.sqlmap.engine.cache.ehcache; 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: * * <pre> * <code> * <cacheModel id="myCache" readOnly="true" serialize="false" * type="com.ibatis.sqlmap.engine.cache.EhCacheController" > * <property name="configLocation" * value="/path-to-ehcache.xml"/> * </cacheModel> </code> * </pre> * * Alternatively, you can use a type alias in your type attribute and defining * the class with a <code><typeAlias></code> declaration: * * <pre> * <code> * <sqlMapConfig> * <typeAlias alias="EHCACHE" * type="com.ibatis.sqlmap.engine.cache.ehcache.EhCacheController" /> * </sqlMapConfig> * </code> * </pre> * */ public class EhCacheController implements CacheController { /** * The EhCache CacheManager. */ private CacheManager cacheManager; public static final String CONFIG_LOCATION = "configLocation"; /** * Default Configure Location */ public static final String DEFAULT_CONFIG_LOCATION = "/ehcache.xml"; /** * 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; } /** * 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(); } } /** * Configure a cache controller. Initialize the EH Cache Manager as a * singleton. * * @param props * - the properties object continaing configuration information. */ @Override public void configure(Properties props) { String configLocation = props.getProperty(CONFIG_LOCATION); // if can not found ehcache.xml from configLocaion, // use default configure file. if (configLocation == null) { configLocation = DEFAULT_CONFIG_LOCATION; } URL url = getClass().getResource(configLocation); cacheManager = CacheManager.create(url); } }
这里默认在根目录下获取ehcache.xml文件,可以通过cacheModel配置进行修改。
在SqlMapConfig.xml文件中配置一个别名,作为全局变量,供其余SqlMap使用。
<typeAlias alias="EHCACHE" type="com.ibatis.sqlmap.engine.cache.ehcache.EhCacheController" />
顺便提一句,要使用缓存注意SqlMapConfig.xml文件中settings节点配置cacheModelsEnabled为true!
<settings cacheModelsEnabled="true" useStatementNamespaces="true" ... />
接下来,在SqlMap.xml文件中的cacheModel中
<cacheModel id="cache" type="EHCACHE"> ... </cacheModel>
如果要变更ehcache.xml文件路径为/config/ehcache.xml,可以在上述节点中下入如下代码:
<property name="configLocation" value="/config/ehcache.xml" />
然后,就可以通过ehcache.xml控制ehcache缓存了!
举例说明iBatis SqlMap & ehcahce.xml,以免有些兄弟混淆!
以Account类为示例,在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="Account"> <cacheModel id="cache" type="EHCACHE"> <flushInterval hours="1" /> <!-- flush操作,需要指明 Namespace --> <flushOnExecute statement="Account.create" /> </cacheModel> <typeAlias alias="account" type="org.zlex.acl.Account" /> <resultMap id="accountMap" class="account"> <result property="accountId" column="accountId" /> <result property="accountName" column="accountName" /> <result property="mail" column="mail" /> <result property="realName" column="realName" /> <result property="status" column="status" /> <result property="lastLoginTime" column="lastLoginTime" /> </resultMap> <select id="readByAccountName" parameterClass="string" resultMap="accountMap" cacheModel="cache"> <![CDATA[ SELECT accountId, accountName, mail, realName, status, lastLoginTime FROM acl_account WHERE accountName = #accountName# ]]> </select> <insert id="create" parameterClass="account"> <![CDATA[ INSERT INTO acl_account( accountName, mail, realName, status, lastLoginTime ) VALUES ( #accountName#, #mail#, #realName#, #status#, #lastLoginTime# ) ]]> <selectKey resultClass="long" keyProperty="accountId"> <![CDATA[select LAST_INSERT_ID() as id ]]> </selectKey> </insert> </sqlMap>
注意:
引用
<select
id="readByAccountName"
parameterClass="string"
resultMap="accountMap"
cacheModel="cache">
这里的cacheModel="cache",对应的在ehcache.xml中就应该是:
<cache name="Account.cache" maxElementsInMemory="10000" eternal="false" maxElementsOnDisk="1000" overflowToDisk="true" timeToIdleSeconds="300" />
因为,我使用了useStatementNamespaces="true"
评论
3 楼
snowolf
2012-10-15
fanfeiyang 写道
哥们,你这是ibatis自带的高速缓存吧,说实话这种配置用着很方便但是随着配置文件的增加,就会很容易漏写一些清空缓存的配置
自己开发的EhCacheController,非自带。。。。
2 楼
fanfeiyang
2012-10-15
哥们,你这是ibatis自带的高速缓存吧,说实话这种配置用着很方便但是随着配置文件的增加,就会很容易漏写一些清空缓存的配置
1 楼
programdolt
2012-04-10
附件在哪里?
发表评论
-
Memcached笔记——(四)应对高并发攻击
2012-09-13 09:48 29077近半个月过得很痛苦,主要是产品上线后,引来无数机器用户恶意 ... -
征服 Redis + Jedis + Spring (二)—— 哈希表操作(HMGET HMSET)
2012-08-29 18:29 82425不得不说,用哈希操作来存对象,有点自讨苦吃! 不过,既然 ... -
征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL)
2012-08-29 16:30 157666有日子没写博客了,真的是忙得要疯掉。 完成项目基础架构搭建 ... -
征服 Redis + Jedis
2012-08-15 17:49 83584用Memcached,对于缓存对象大小有要求,单个对象不得 ... -
Linux环境小问题——Get HostName Error
2012-08-06 12:55 7444之前使用mysql的时候,在配置文件中,已经指明了ip访问,但 ... -
Memcached笔记——(三)Memcached使用总结
2012-07-04 17:06 44660为了将N个前端数据同步 ... -
Memcached笔记——(二)XMemcached&Spring集成
2012-04-01 09:55 42421今天研究Memcached的Java的Client,使用XMe ... -
Memcached笔记——(一)安装&常规错误&监控
2012-03-09 14:27 3561408年的时候接触过Memcached,当时还对它的客户端产品嗤 ... -
memcached整合ibatis
2012-03-08 09:10 0ibatis自带的本地缓存有FIFO,LRU等,对于分布式缓存 ... -
iBatis整理——Spring环境下批处理实现
2010-09-01 15:56 21143最近做一个小项目,用到Spring+iBatis。突然遇到一个 ... -
Ehcache简单应用——RSSReaderTag
2010-08-04 15:00 3368关于缓存,关于自己运用,大部分情况是通过ORM配置生效。基本上 ... -
iBastis null
2010-01-19 18:15 0最近一年多的时间都是和遗留系统打交道,处理一些诡异问题。不曾料 ... -
iBatis自动生成的主键 (Oracle,MS Sql Server,MySQL)
2008-07-16 22:10 9955iBatis的sqlMap配置文件的selectKey元素有个 ... -
OSCache使用指南
2008-07-09 13:41 6401OSCache是当前运用最广的缓存方案,JBoss,Hiber ...
相关推荐
基于改进YOLOv5s的森林烟火检测算法.pdf
人力资源管理工具绩效考核excel模板01
施工班组长绩效考核表
57 -营业部经理绩效考核表1
XX公司行政部绩效考核指标
1、文件内容:ant-apache-xalan2-1.9.4-2.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ant-apache-xalan2-1.9.4-2.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
部门绩效考核表模板(基于KPI以月度为例2)
11-6-质检员绩效考核表(含自动计算、等级评价及任意设置等级)
2024最新全国河流湖泊矢量数据 【数据介绍】 2024年中国河流湖泊数据 一份包含中国境内所有主要河流和湖泊的地理信息数据。 数据格式:Shapefile:广泛使用的GIS数据格式,方便在各类GIS软件中使用。 数据获取:访问OpenStreetMap官网,通过导出工具选择中国区域并下载所需的数据。 使用Geofabrik等第三方网站,可以下载预处理好的中国区域的OSM数据。 数据使用:GIS软件:如QGIS、ArcGIS等,用户可以在这些软件中导入OSM数据进行可视化、分析和编辑。 数据应用: 环境研究:分析河流湖泊的水质变化,研究水资源分布及其环境影响。 城市规划:用于规划城市水系、洪水防控、水资源管理等。 导航和旅游:为河流湖泊的导航和旅游路线规划提供数据支持。 科研:为水文地理研究、生态保护、气候变化等领域提供基础数据。 数据特点: 实时更新:OSM数据由全球用户贡献,具有较高的实时性和更新频率。 开放性:所有数据都在开放许可下发布,允许用户自由使用、修改和分发。 详细性:由于全球志愿者的不断努力,数据细节较为丰富,涵盖了从主要河流湖泊到小型水体的广泛范围。 数据时间2024年5月,shp格式,数据来源OpenStreetMap。 OpenStreetMap(OSM)介绍: 一个开放的、免费的、全球性的地图项目,由全球的志愿者和地图爱好者们共同创建和维护。 OSM的数据包括道路、建筑、公园、河流、湖泊等各类地理信息。由于是由众多志愿者共同编辑,OSM的数据具有很高的实时性和详细程度,特别是在一些活跃的区域,地图数据的更新速度和精度往往超过商业地图服务。 用户可以直接在OSM官网下载地图数据,数据格式主要有OSM XML和PBF等。此外,还有一些第三方网站和工具提供更加便捷的数据下载和处理服务,如Geofabrik、Overpass API等。 OSM的数据可以在各种GIS软件中使用,如QGIS、ArcGIS等。此外,还可以使用Python的OSMnx、GeoPandas等库进行编程处理,或者通过Leaflet、Mapbox等JavaScript库将OSM数据集成到web地图应用中。 OSM的所有数据都在开放许可下发布,允许用户自由使用、修改和分发。这使得OSM成为了许多公共项目、研究机构和商业公司的重要数据来源。
部门绩效考核评分表
12-11-运输车队长绩效考核表(含自动计算、等级评价)
1、文件内容:ant-javadoc-1.9.4-2.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ant-javadoc-1.9.4-2.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
springboot整合 freemarker方法
1、文件内容:apache-commons-codec-1.8-7.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/apache-commons-codec-1.8-7.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
《旅游抽样调查资料》是反映入境游客在华(内地)花费和国内居民国内旅游情况的资料性年刊,分为上下两篇。 上篇为在华(内地)停留时间在3个月以内的入境游客抽样调查资料,由综合分析报告和调查分类数据两部分组成,分类数据包括:入境游客的主要特征,入境外国人、港澳台同胞的花费水平和花费构成、在境内的停留时间以及入境次数、流向和对住宿单位的选择等。 下篇为国内旅游抽样调查资料,汇集了对城镇居民和农村居民的国内旅游抽样调查结果,共分为四个部分:第一部分为综合分析报告;第二部分为国内旅游出游及花费情况;第三部分为城镇居民国内旅游抽样调查分类数据;第四部分为农村居民国内旅游抽样调查分类数据。
1、表单界面,身份证信息保存在dbf表中,供vfp应用使用,可导出为xls电子表格。 2、提供了身份证过期校验和查询功能。
人事行政主管绩效考核评分表
08 -大堂副理绩效考核表1
1、文件内容:apr-1.4.8-7.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/apr-1.4.8-7.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
ComponentNameError解决办法.md