浅析Hibernate的一级缓存和二级缓存

来源:互联网 发布:矩阵奖金制度 编辑:程序博客网 时间:2024/06/17 01:41

         首先,本人是个程序小白,但是通过资料对Hibernate的缓存机制有一定的了解,故写下这篇博客以此加深记忆,文中有许多不对的地方,还望大佬指正!

       Hibernate作为一个持久层框架,对数据库频繁的进行存取操作,但是频繁的对数据库操作其效率却不太高,而Hibernate正好就提供了这么一个缓存机制来提高性能和小效率,Hibernate的缓存机制分为一级缓存和二级缓存,一级缓存是session级别的缓存,何为session级别的缓存?此Session是指每次与数据库进行会话交互的session,属于事务范围的缓存,每次进行数据库操都会持久化对象时,该对象就会加入到缓存中,比如执行session.save方法执行后,该对象就会被加入到缓存中,以后即使程序中不再引用该对象,只要缓存不清空,该对象仍然处于生命周期中。当试图get()、 load()对象时,会判断缓存中是否存在该对象,有则返回,此时不查询数据库。没有再查询数据库.


二级缓存 
SessionFactory 的缓存可以分为两类: 
内置缓存: Hibernate 自带的, 不可卸载. 通常在 Hibernate 的初始化阶段, Hibernate 会把映射元数据和预定义的 SQL 语句放到 SessionFactory 的缓存中, 映射元数据是映射文件中数据的复制, 而预定义 SQL 语句时 Hibernate 根据映射元数据推到出来的. 该内置缓存是只读的. 
外置缓存(二级缓存): 一个可配置的缓存插件. 在默认情况下, SessionFactory 不会启用这个缓存插件. 外置缓存中的数据是数据库数据的复制, 外置缓存的物理介质可以是内存或硬盘


阅读全文
0 0
原创粉丝点击