`

Hibernate二级缓存及产品Oscache

 
阅读更多
二级缓存也称进程级的缓存或SessionFactory级的缓存,二级缓存可以被所有的session共享。二级缓存的生命周期和SessionFactory的生命周期一致,SessionFactory可以管理二级缓存。一般二级缓存我们都是通过第三方产品来实现,其中有很多缓存产品,下面的就以Oscache来介绍一下二级缓存的使用。

Oscache缓存有几种,其中有:
对页面部分的缓存。
对整个页面的缓存。
对对象的缓存。

一、对部分页面的缓存。
1. 下载、解压缩OSCache
   请到OSCache的主页http://www.opensymphony.com/oscache/download.html下载Oscache的最新版本,作者下载的是OSCache的最新稳定版本2.0。将下载后的Zip文件解压缩到c:oscache(后面的章节中将使用%OSCache_Home%来表示这个目录)目录下
2. 新建立一个web应用
3. 将主要组件%OSCache_Home%oscache.jar放入WEB-INF/lib目录
4. commons-logging.jar、commons-collections.jar的处理
OSCache组件用Jakarta Commons Logging来处理日志信息,所以需要commons-logging.jar的支持,请将%OSCache_Home%libcorecommons-logging.jar放入classpath(通常意味着将这个文件放入WEB-INFlib目录)
如果使用JDK1.3,请将%OSCache_Home%libcorecommons-collections.jar放入classpath,如果使用JDK1.4或以上版本,则不必了
5. 将oscache.properties、oscache.tld放入WEB-INF/class目录
%OSCache_Home%oscache.properties包含了对OSCache运行特征值的设置信息
%OSCache_Home%oscache.tld包含了OSCache提供的标签库的定义内容
6. 修改web.xml文件
在web.xml文件中增加下面的内容,增加对OSCache提供的taglib的支持:

XML/HTML代码
<taglib>    
        <taglib-uri>oscachetaglib-uri>     
        <taglib-location>/WEB-INF/classes/oscache.tldtaglib-location>     
taglib>   



只需要通过上面简单的配置,我们就可以使用oscache对部分页面的缓存了,我们新建一个jsp页面,先在头部声明如下:

XML/HTML代码
<%@ taglib uri="oscache" prefix="os"%>  
<%@ page import="com.eway.action.user.ArticleAction"%>  
<%@ page import="com.eway.entity.Article"%>  
<%@ page import="java.util.List;"%>  


其中的第一行是表示使用oscache的标签,底下的是我为了下面程序的需要导入的包。
然后在jsp页面当中加入oscache的标签,如下所示

XML/HTML代码
<os:cache key="1" time="1800" scope="session">    
<%   
    ArticleAction action = new ArticleAction();   
    List<Article> list = action.testOscache();   
    for(int i = 0; i < list.size(); i++){   
        Article article = list.get(i);   
        out.println(article.getTitle());   
    }   
%>  
os:cache>   


其中oscache的标签的一些属性含义如下:

key   : 缓存的Key,可以是任何的字符,用来寻找缓存的内容用的.可以理解成HashMap中的Key.不能把2个要缓存的东东定义成一个名字,那样后一个会覆盖前一个的内容.默认情况,如果不指定Key的话,OSCache也会自动生成一个Key,规则是请求的URI+当前页面的Query String.scope  : 缓存的范围.有2个, application和session.默认值是application.time   : 缓存内容的时间.以秒为单位,默认是3600秒.到了指定的时间,就会刷新缓存内容.如果指定一个负数的话,意味着永远不会过期.duration : 也是用来指定缓存内容的时间,它和time属性只能是2选1,它的特点是可以用Simple Data Format 或者是ISO-8601进行日期格式化.cron   : 用万年历的形式指定缓存内容何时过期的.它应用的Unix的万年历形式,如("0 * * * *")refresh  : 是个Boolean值,如果是True的话,则不管前面提到的过期检查,都刷新.默认情况是false.mode   : 设置这项为”silent”将防止把括起来的内容输出.这在你预加载缓存内容而不愿显示给用户看到时很有用.groups  : 可以提供一个以逗号分割的组名称.如group="A, B".这将允许你以组的名义来操作他们,分组非常有用,比如你要缓存的内容正好需要另外一个应用程序的一部分或数据,当依赖的发生了改变,正好联动的可以使很多的组过期,进而使与组发生关联的缓存内容得到更新.language : 设置编码方式.refreshpolicyclass:指定自定义的类来处理缓存的内容什么时候过期.这个类需要从 refreshpolicyparam com.opensymphony.oscache.web.WebEntryRefreshPolicy继承.refreshpolicyparam : 它和上面的是联合使用的.是给refreshpolicyclass传任意的参数的.指定这项的话,就必须有refreshpolicyclass,否则就不起作用.
其中,我不得不把cron表达式多说几句.首先这五颗星的位置代表分,小时,一个月中的天,月,一周中的天分: 无疑问0~59.小时 : 无疑问 0~23.天(月) : 1~31月 : 1~12,用英文全称也可以.如January, April天(周): 0~6(0代表Sunday; 1代表Monday… 6代表Saturday)举个例子,比如我们想让缓存的内容在4月的晚上11:45分过期.我们可以这样来写"45 23 * April *".7、测试是否配置成功
要想测试是否成功非常的简单,首先在前面的jsp页面里面,得到文章的标题,即article.getTitle(),其是从数据库当中取得数据,假如我们是用Hibernate做数据持久化,那么我们可以把Hibernate的访问数据库的sql语句显示出来,当我们第一次访问jsp页面的时候,肯定显示查询数据库语句,这时候我们再次的访问这个jsp页面,如果这个时候访问明显变得快了,并且后台没有输出sql语句,那么说明缓存配置成功了。

二、对整个页面的缓存
要想对整个页面的缓存,首先的准备工作同上面一样,然后在web.xml文件里面加上

XML/HTML代码
  
<filter>  
    <filter-name>cacheFilterfilter-name>   
    <filter-class>com.opensymphony.oscache.web.filter.CacheFilterfilter-class>   
    <init-param>  
        <param-name>timeparam-name>   
        <param-value>3600param-value>   
    init-param>   
    <init-param>  
        <param-name>scopeparam-name>   
        <param-value>applicationparam-value>   
    init-param>   
filter>       
  
<filter-mapping>  
    <filter-name>cacheFilterfilter-name>   
    <url-pattern>/user/article!list.dourl-pattern>   
filter-mapping>   


其中下面的文章列表页面缓存的配置,就表示了对哪个请求做缓存,值得注意的是,这个缓存的配置一定要放在struts过滤器的前面。配置成功后,其测试的方法同上。

三,对象的缓存。

这里介绍的对象的缓存是通过和Spring的集成来实现的,其准备工作同上面一样,然后在spring的配置文件里面加上:

XML/HTML代码
  
<oscache:config configLocation="classpath:oscache.properties" id="cacheProvider" />  
<oscache:annotations providerId="cacheProvider">  
    <oscache:caching id="testCaching" cronExpression="0 1 * * *" refreshPeriod="86400" />  
    <oscache:flushing id="testFlushing" />  
oscache:annotations>   
  
<bean id="cacheManager" class="org.springmodules.cache.provider.oscache.OsCacheManagerFactoryBean">  
    <property name="configLocation" value="classpath:oscache.properties" />  
bean>   


其中cronExpression的含义同前面介绍的cron表达式是一样的,然后我们对一个对象的一个方法来作缓存,我们在ArticleService类里面加上:

Java代码
@Cacheable(modelId = "testCaching")   
public Article getArticle(long id);    


即在得到一个Article对象的方法上加上Cacheable注解,表示为其作缓存,其中的testCaching就是spring配置文件里面的testCaching。
通过上面的配置,我们在前端访问getArticle这个方法后,其得到的Article的实例就放到缓存里面了,要想测试是否成功,可以同上面介绍的相同方法来进行测试。

分享到:
评论

相关推荐

    二级缓存OScache配置

    二级缓存插件OScache配置,很好的学习资料

    hibernate 3中的缓存小结

    2.3.1. Hibernate的二级缓存策略的一般过程如下: 1) 条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的SQL语句查询数据库,一次获得所有的数据对象。 2) 把获得的所有数据...

    hibernate+oscache实现二级缓存实例

    非常实用的一个例子,有关于缓存对象 list 或缓存地址或jsp或其它页面,在实例中都有,须望可以帮到大家

    Hibernate OSCache缓存

    Hibernate OSCache缓存 Hibernate OSCache缓存

    Hibernate_二级缓存总结

    它可以使用不同的缓存实现,如 EhCache 、 JBossCache 、 OsCache 等 (二级缓存是缓存实体对象的) 还有一个类型的 CACHE 就是 QueryCache . 它的作用就是缓存一个 Query 以及 Query 返回对象的 Identifier 以及...

    JSP 开发之hibernate配置二级缓存的方法

    hibernate二级缓存也称为进程级的缓存或SessionFactory级的缓存。 二级缓存是全局缓存,它可以被所有的session共享。 二级缓存的生命周期和SessionFactory的生命周期一致,SessionFactory可以管理二级缓存。 ...

    oscache,缓存机制的使用

    oscache,java,缓存机制的使用

    oscache缓存技术

    oscache缓存技术,压缩包中有详细代码及步骤

    缓存技术 oscache-2.3.2.jar包下载

    缓存技术 oscache-2.3.2.jar包下载

    oscache缓存中间件

    OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存...

    oscache缓存技术入门实例

    oscache缓存技术入门实例

    OSCache配置说明文档

    OSCache是一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。 OSCache有以下特点:缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。...

    OSCache缓存技术

    Cache是一种用于提高系统响应速度、改善系统运行性能的技术。尤其是在Web应用中,通过缓存页面的输出...OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存解决方案。

    用OSCache进行缓存对象

    1、OSCache是什么? 2、OSCache的特点 3、有关“用OSCache进行缓存对象”的研究

    oscache-java缓存框架

    oscache-java缓存框架插件和安装教程,使用教程一步到位

    oscache(JSP定制标记应用)

    javaweb做页面缓存常用,OSCache是一个工业级的J2EE缓存实现。OSCache不但能缓存java对象,还可以缓存页面,http请求和二进制内容,例如pdf文件等。通过应用OSCache,我们不但可以实现通常的Cache功能,还能够改善...

    OsCache缓存框架使用示例

    这里结合 天气预报的webservice 展示了OsCache框架的具体使用方法 项目可直接运行 ,代码简洁清晰

    oscache的例子

    OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存...

    oscache文档

    OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。OSCache有以下特点:缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。 ...

    Oscache使用手册

    Cache是一种用于提高系统响应速度、改善系统运行性能的技术。尤其是在Web应用中,通过缓存页面的...OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存解决方案。。。。

Global site tag (gtag.js) - Google Analytics