Hibernate的PO对象状态
1.临时态
2.持久态
3.脱管态
4.Session中改变PO对象状态常用方法
Hibernate的configuration类
Hibernate的SessionFactory接口
SessionFactory接口负责初始化Hibernate(一般一个应用只有一个SessionFactory)
如:
SessionFactory sf=cfg.buildSessionFactory();
Hibernate的Session接口
获取到Session对象后,Hibernate内部并不会立即获取connection对象,而是等待真正需要增删改查操作才会从数据库中获取Connection对象。关闭Session对象时,则是将Connection对象返回到连接池中,而不是关闭Connection对象;
Session类的方法分类分成5类:
1.获取持久化对象:get()和load()等方法;
2.持久化对象的保存,更新,删除:save(),update(),saveOrUpdate()和delete()等;
3.createQuery方法:用来从Session生成Query对象,Query对象调用Query接口,在此接口中可以调用HQL或者本地SQL查询数据;可使用excuteUpdate()方法更新或删除数据;使用list()方法查询结果,使用List进行存储;
4.beginTransaction()方法:用来从Session生成Transaction对象(Transaction接口是对事务实现的一个抽象常用方法:1.commit():提交相关联的Session实例;2.rollback():撤销事务操作;3.wasCommitted():检查事务是否提交),然后使用createQuery方法调用Query接口,在此接口中可以调用HQL或者本地SQL查询数据;
5.管理Session的方法:isOpen(),flush(),clear(),evict()和close()等方法,其中isopen()方法用来检查Session是否仍然打开;flush()方法使用清理Session缓存,并把缓存中的SQL语句发送出去;clear()方法用来清除Session中的所有对象;evict()用于清除Session缓存中的某个对象;close()用于关闭Session方法;
Hibernate中通过方法获取PO对象
get()和load()方法区别如下:
立即加载PO对象和延迟加载对象(当Hibernate从数据库中取得数据组取得数据组装好一个对象后,是否立即再从数据库取得数据组装与此对象相关联的对象,如果是延迟加载,而是等到需要时,才会从数据库取得数据组转关联数据);
在立即加载中,如果对象不存在,get方法返回null,而load方法返回异常;
在延迟加载中,如果对象不存在,get方法仍然使用立即加载发送sql语句,并返回初始化对象,而load方法则根本不会发送sql语句,他返回一个代理对象,这个对象直到被访问时才被初始化;