Hibernate缓存概述
一级缓存(session级别缓存)
也叫事务级别的缓存
二级缓存(sessionFactory缓存)
也叫应用级缓存
三级缓存(查询缓存)
区别:
- 一级缓存的生命周期和session的生命周期保持一致,hibernate默认就启用了一级缓存,不能将其关闭,可以通过session.clear()和session.evict(object)来管理一级缓存。其中get,load,iterate都会使用一级缓存,一级缓存缓存的是对象。一级缓存只查询主键时有用。
- 二级缓存的生命周期和sessionFactory的生命周期保持一致,可以跨session,被多个session共享,可以手动开启并指定缓存插件如ehcache,oscache等。二级缓存也只能缓存对象。二级缓存只查询主键时有用。
- 三级缓存也叫查询缓存,查询缓存依赖二级缓存,所以在使用查询缓存之前配置好二级缓存。可以指定条件缓存
Hibernate核心类接口
Configuration接口
对Hibernate进行配置,以及对它进行启动。(加载hibernate.cfg.xml)并创建一个SessionFactory对象。
SessionFactory接口
SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建 Session对象。SessionFactory是线程安全的。
Session接口
Session(会话)接口是Hibernate应用使用的主要接口。Session接口负责执行被持久化对象的CRUD操作(增删改查)。Session对象是非线程安全的。Session相当于jdbc的connection。
Query接口
总之Query接口负责执行各种数据库查询。它可以使用HQL语句或SQL 语句两种表达方式。
Transaction接口
Transaction(事务)接口是一个可选的API。负责操作相关的事务
Hibernate配置文件中inverse属性作用
作用:
由谁来控制关联关系的自动维护
配置在节点上面:
inverse=“true”代表被动方,由关联的对象来维护他们之间的关联关系