zoukankan      html  css  js  c++  java
  • hibernate3缓存(hibernate)

    一级缓存:
    当应用程序调用Session 的save() 、update() 、savaeOrUpdate() 、get() 或load() ,以及调用查询接口的list() 、iterate() 或filter() 方法时,如果在Session 缓存中还不存在相应的对象,Hibernate 就会把该对象加入到第一级缓存中。当清理缓存时,Hibernate 会根据缓存中对象的状态变化来同步更新数据库。
    Session 为应用程序提供了两个管理缓存的方法:
    evict(Object obj) :从缓存中清除参数指定的持久化对象。
    clear() :清空缓存中所有持久化对象。
    比如:
    我用get按id获取一条数据:Register re=(Register)this.getHibernateTemplate().get(Register.class,username);
    此时第一次在控制台会显示相应的SQL语句,在不重启服务器和在一定时间类(貌似默认是3分钟),再次按相同的id查询时,控制台是不会出现SQL语句!
    一级缓存是系统自己就配置好了的。

    二级缓存:
    在这里只是测试了find,在没有配置时,每次使用find查询相同条件的数据时,每次都会在控制台显示SQL语句,配置了一个,就可以实现一级缓存的效果,网上的方法都很类似,但没成功 = =!
    自己的方法:
    1.在hibernate配置文件中添加:

    <property name="hibernate.cache.use_query_cache">true</property>
    <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>

    2.在要缓存的数据的实体配置文件中 添加:

    <cache usage="read-only"/>

    3.在查询dao中查询语句中添加

    this.getHibernateTemplate().setCacheQueries(true);

    4.添加ehcache.xml

  • 相关阅读:
    PHP返回XML与JSON数据
    Canvas学习-1
    PHP与cURL
    PHP调用SOAP Webservice
    Ubuntu查找文件是否安装
    API Centeric Web Application论文
    Git学习2
    An invalid character [32] was present in the Cookie value
    关于eclipse项目的x号报错的一些问题
    关于eclipse的项目前有感叹号和errors exist in required project相关问题
  • 原文地址:https://www.cnblogs.com/estellez/p/4152983.html
Copyright © 2011-2022 走看看