hibernate缓存学习记要(转)
hibernate缓存学习记录(转)缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域, 目的是
hibernate缓存学习记录(转)
缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域,
目的是为了减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能.
? Hibernate在查询数据时,首先到缓存中去查找,如果找到就直接使用,找不到的时候
就会从物理数据源中检索,所以,把频繁使用的数据加载到缓存区后,就可以大大减少应
用程序对物理数据源的访问,使得程序的运行性能明显的提升.
缓存分两级,一级session缓存,就是常说的一级缓存;二级应用缓存(二级缓存);
一级缓存,一级缓存依赖于session,在一个session中就是一个缓存,当session失效时,缓存消失。
/**两个session两次加载**/
?


?

? maxElementsInMemory为缓存对象的最大数目,
? eternal设置是否永远不过期,
? timeToIdleSeconds对象处于空闲状态的最多秒数,
? timeToLiveSeconds对象处于缓存状态的最多秒数 。
? 在实体bean的hbm.xml文件中加上缓存配置:
?

?
? 现在大部分的hibernate应用不再写实体映射配置文件,那么就在实体bean中加上
? //默认的缓存策略.
?

?

? ?

?

?

?

?

?

Hibernate: select book0_.id as id0_, book0_.bname as bname0_, book0_.isbn as isbn0_, book0_.price as price0_ from hibernate_test.dbo.book book0_ book1250672666171----123456--------->list1 book1250672666203----123456--------->list1 book1250672666203----123456--------->list1 book1250672666203----123456--------->list1 book1250672666203----123456--------->list1 Hibernate: update hibernate_test.dbo.book set bname=?, isbn=?, price=? where id=? Hibernate: select book0_.id as id0_, book0_.bname as bname0_, book0_.isbn as isbn0_, book0_.price as price0_ from hibernate_test.dbo.book book0_ book1250672666171----123456--------->list3 book1250672666203----567890--------->list3 book1250672666203----123456--------->list3 book1250672666203----123456--------->list3 book1250672666203----123456--------->list3
可见,当数据库有更新的时候,缓存就失效了。