一、hibernate五个核心
严谨的来说:(四大接口一个类)
1 .Configuration类的作用是对Hibernate进行配置,以及对它进行启动。(加载 hibernate.cfg.xml)并创建一个SessionFactory对象。
2 .SessionFactory接口
SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建 Session对象。SessionFactory是线程安全的
3 .Session接口
Session(会话)接口是Hibernate应用使用的主要接口。Session接口负责执行被持久化对象的CRUD操作(增删改查)。Session对象是非线程安全的。Session 相当于jdbc的connection
4 .Query与Criteria接口
总之Query和Criteria接口负责执行各种数据库查询。
5 .Transaction接口
Transaction(事务)负责操作相关的事务。
二、Hibernate的三种状态以及状态的转换
1、Transient(临时)
new 一个初始化对象后,并没有在数据库里保存数据,处于临时状态;
2、Persistent(持久化)
当执行save()方法,调用session.close()方法之前,内存中的对象与数据库有对应关系处于持久化状态;
3、Detached(托管/游离)
当执行session.close()之后,处于托管状态;
状态的转换
在持久化状态下,执行delete()方法后,转换为临时状态;
处于托管状态下,调用update()方法后,转换为持久化状态;
在未初始化对象之前,调用get(),load(),find(),iterate()之后,直接进入持久化状态。
三、hibernate缓存概述
hibernate分为一级缓存即session缓存也叫事务级别的缓存以及
二级缓存sessionFactory即应用级别的缓存,还有查询缓存即三级缓存.
一级缓存的生命周期和session的生命周期保持一致,
hibernate默认就启用了一级缓存,
不能将其关闭,可以通过session.clear()和session.evict(object)来管理一级缓存。其中get,load,iterate都会使用一级缓存,一级缓存缓存的是对象。
二级缓存的生命周期和sessionFactory的生命周期保持一致,可以跨session,被多个session共享,hibernate3默认开启二级缓存,也可以手动开启并指定缓存插件如ehcache,oscache
等。二级缓存也只能缓存对象。
三级缓存也叫查询缓存,查询缓存是针对普通属性结果集的缓存,
对实体对象的结果集只缓存id。对query.list()起作用,query.iterate不起作用,也就是query.iterate不使用查询缓存