hibernate核心API介绍
来源:互联网 发布:淘宝分享有礼活动效果 编辑:程序博客网 时间:2024/05/20 13:18
1.1. 对象的三种状态
临时状态(瞬时状态):
指的是该对象不受session对象管理,没有id值,刚刚被new创建出来的。
持久化状态:
通过session对象的save、saveOrUpdate方法从临时状态变成持久化状态。受session对象管理,有id值,持久化状态的对象在修改对象的属性的时候,会自动的把修改后的值同步到数据库中,相当发出update的语句
游离状态(托管状态):
通过session对象的close、clear、evict方法把一个持久化状态的对象转换成游离状态的对象。
游离状态的对象不受session的管理,有id值
删除状态(非官方)
1.2. Session详解
Session对象在hibernate中的属于一级缓存、会话级别的缓存、对象级别缓存,hibernate中不想用一级缓存,还不行,自带的。
缓存:把数据保存到内存中
Session属于会话级别的缓存,如果不是同一个session对象,缓存的数据不能共用。
Get方法与load方法的区别(面试题)
1.Session中的get方法与load方法都可以把数据缓存到一级缓存
2.Get方法执行后会立即发出sql语句(立即加载),load方法不会立即发出sql语句,在调用对象中的非本地方法的时候会发出sql语句(懒加载)
3.load方法得到的对象是一个代理对象,get方法得到的对象是po类型的真实类型的对象
4.Get方法查询数据的时候,没有该数据,返回null,如果laod方法查询数据的时候,没有该数据,直接报错
evict(Obj)方法:清除一级缓存中指定的缓存对象
Clear方法:可以清楚一级缓存中的所有缓存对象
Update方法:更新对象,更新的对象没有id会报错,或者id在数据库中没有该记录,也会报错
1.3. SessionFactory介绍
l Hibernate中有一级缓存、二级缓存,一级缓存Session对象,二级缓存就是指的是SessionFactory对象,只不过hibernate没有提供二级缓存的实现类(第三方的缓存实现类来实现),提供了接口。
l SessionFactory是一个重量级的对象(在创建该对象的时候消耗资源比较大),所以hibernate中的SessionFactroy对象建议在应用中只有一份,它是一个线程安全的对象,此对象就可以作为成员变量使用。Session对象是一个线程安全的吗?(不安全)
l SessionFactory对象是创建Session对象的工厂,提供了两种方式得到Session。一种是openSession()、一种是getcurrentSession().
l openSession和getcurrentSession区别(面试题)
openSession每次调用都会产生一个新的Session对象
要使用getcurrentSession方法需要在hibernate.cfg.xml配置文件中配置
<property name="hibernate.current_session_context_class">thread</property>
getcurrentSession每次调用先会去线程中拿,没有才创建一个新的session对象
两种方式获得session建议使用哪个方法?
在实际开发中使用getcurrentSession
- hibernate核心API介绍
- 第五章 Hibernate核心API介绍与其使用
- Hibernate核心API(理解)
- Hibernate核心API
- Hibernate:核心API
- Hibernate 核心的API
- Hibernate核心API
- Hibernate核心API
- hibernate核心API简介
- Hibernate的核心API
- hibernate核心api
- Hibernate入门----核心API
- Hibernate核心API详解
- Hibernate 核心 api
- hibernate核心API
- Hibernate核心API
- hibernate核心api
- hibernate核心接口介绍
- 数据预处理与特征选择
- war包tomact部署
- Minor number must not contain leading zeroes Docker mac
- App更新之dialog数字进度条
- Java注解基本认识
- hibernate核心API介绍
- Mybatis之高级映射collection (递归查出树形数据之查询部门及部门下所有人员 二叉树)
- 欧朋的paused in debugger怎么关闭
- Android studio Failed to open zip file解决方案
- poj3509 Rotating Rings
- Android UI 之自定义RadarView——高仿微信雷达扫描
- java基础——final、finally、finalize区别
- 函数中定义了迭代器
- 怎么学unity3d-unity3d学习路线建议