hibernate的一级缓存就是指Session缓存
(1)hibernate的一级缓存默认打开的
(2)hibernate的一级缓存使用范围,是session范围,从session创建到session关闭范围
(3)hibernate的一级缓存中,存储数据必须 持久态数据
验证一级缓存的存在
第一步执行get方法之后,发送sql语句查询数据库
第二个执行get方法之后,没有发送sql语句,是直接从一级缓存里面查找内容,这样就省了很多时间。
Hibernate一级缓存执行过程:
Hibernate一级缓存特性: 持久态自动更新数据库
不需要用session的update方法就可以对数据库进行更新了。
持久态自动更新的过程:
在创建session的时候会出现一个一级缓存,同时也会产生一个快照区(副本),执行session.get方法时先在一级缓存区找有没有这个数据如果没有就去数据库查询,然后把持久态对象放到一级缓存和快照区,然后通过set*来修改持久态的值和一级缓存中的内容,但是不会修改快照区的内容,提交事物时进行比较,比较一级缓存区的内容和快照区的内容是否相同,不相同就把一级缓存中的内容更新到数据库,相同就不进行操作。