Hibernate对象的3种状态

Hibernate对象的3种状态:

	1,临时状态(Transient):
		与数据库没有对应,跟Session没有关联。
		一般是新new出的对象。
	2,持久化状态(Persistent):
		对象在Session的管理之中,最终会有对应的数据库记录。
		特点:有ID,并且对对象的修改会同步到数据库。
	3,游离状态(Detached,又叫脱管状态):
		数据库中有对应记录,但对象不在Session管理之中。
		修改此状态对象时数据库不会有变化。

	Session中的对象是:内存中的对象的引用,Session关闭后,内存中的对象还存在。
		a)transient:内存中一个对象,没ID,缓存中也没有
		b)persistent:内存中有,缓存中有,数据库有
		c)detached:内存有,缓存没有,数据库有

	对象状态间的转换:
		save():把临时状态变为持久化状态(交给Sessioin管理),生成:insert into ...语句
		update():把游离状态变为持久化状态,生成:update ...
		saveOrUpdate():把临时或游离状态转为持久化状态,生成:insert into 或 update ...语句
			注:本方法是根据id判断对象是什么状态的:如果id为原始值(对象的是null,原始类型数字是0)就是临时状态,如果不是原始值就是游离状态。
		get():获取数据,是持久化状态,生成:select ... where id=? 语句,并且会马上执行SQL语句
		load():获取数据,是持久化状态,生成:select ... where id=? 语句,是否马上执行SQL语句,取决于lazy的取值。
		delete():从数据库里删对象,缓存也会被清除,把持久化转为临时状态,生成:delete ... 语句
		evict()、clear()、close()把持久化状态转换为游离状态
	
			

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值