Hibernate的缓存机制

2/22/2017来源:ASP.NET技巧人气:2939

缓存

数据存到数据库里,数据库本身是文件系统,使用流方式操作文件效率低;

数据存到内存里面,不需要使用流的方式,可以直接读取内存数据 把数据放到内存中,提高读取效率

Hibernate 缓存

hibernate 框架中提供多种优化方式,其中缓存机制就是其一

hibernate 缓存特点

第一类:一级缓存

hibernate默认打开一级缓存 一级缓存使用范围:session范围,从session创建到session关闭 hibernate一级缓存中,存储的数据必须是持久态数据(实体类有3中状态)

第二类:二级缓存

目前已经不使用,替代技术redis 默认不打开 使用范围,是sessionFactory范围

验证一级缓存方式

根据id重复查询(根据是否发送sql语句) //第一次查询 User user1 = session.get(User.class, 2); System.out.PRintln(user1); //第二次查询 User user2 = session.get(User.class, 2); System.out.println(user2); /* -- 执行结果 -- 第一次查询:hibernate底层会发送sql语句到数据库查询数据 -- 第二次查询:hibernate不会通过sql语句查询,而是根据缓存的内容返回 Hibernate: select user0_.uid as uid1_0_0_, user0_.username as username2_0_0_, user0_.passWord as password3_0_0_, user0_.address as address4_0_0_ from t_user user0_ where user0_.uid=? User [uid=2, username=李白, password=123456, address=广东广州] User [uid=2, username=李白, password=123456, address=广东广州] */

一级缓存的执行过程

一级缓存

hibernate一级缓存特性

持久态会自动更新数据库

执行原理 自动更新数据库