hibernate 简单笔记(三)

hibernate提供两类缓存:

  1. 一级缓存是session缓存,属于事务级缓存。hibernate不提供配置操作,但能够进行主动清除;
  2. 二级缓存是sessionFactory缓存,相当于把经常操作的数据缓存在内存中。之前的项目中利用了memcache和spring的AOP主动实现的,hibernate中也提供了这样的默认机制。见下面这个例子:

一.配置hibernate.cfg.xml:

复制代码
        <property name="cache.use_second_level_cache">true</property>   
        <property name="cache.use_query_cache">true</property>  
        <property name="cache.provider_class">org.hibernate.cache.OSCacheProvider</property>
        <property name="generate_statistics">true</property>
              
        <mapping resource="com/TBook.hbm.xml" />
        <mapping resource="com/TOwner.hbm.xml" />
        
        <class-cache usage="read-only" class="com.TOwner"/> //对TOwner的操作将使用二级缓存,缓存类型为只读
复制代码

二.操作:

复制代码
    public static void queryTest(){
        Configuration con = new Configuration();
        con.configure();
        
        SessionFactory sessionfactory = con.buildSessionFactory();
        Session session = null;
        Transaction tran = null;
        for(int i = 0; i < 10; i++){
            try{
                session = sessionfactory.openSession();
                tran= session.beginTransaction();
                        
                TOwner owner = (TOwner) session.get(TOwner.class, new Integer(1));            
                tran.commit();
            }catch(RuntimeException e){
                if(null != tran){tran.rollback();}
            }finally{
                session.close();
            }
        }
        
        Statistics stat = (Statistics) sessionfactory.getStatistics(); 
        System.out.println("hit:"+stat.getSecondLevelCacheHitCount()); //显示为hit:9
        System.out.println("put:"+stat.getSecondLevelCachePutCount()); //显示为put:1
        System.out.println("miss:"+stat.getSecondLevelCacheMissCount());//显示为miss:1    
    }
}
复制代码

如上例可知,第一次操作get的时候缓存命中失败,因此put入缓存,之后的操作全部是查找缓存中的数据。

posted @   Fredric_2013  阅读(269)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示