核心开发接口二,对象三种状态

Transient:对象刚刚new出来,设了一些其他值没有设id。当你调用了save或者saveOrUpdate,会转成Persistent,这个状态是有id的,比如这时我把session close了,这个对象就变成Detached(脱管,脱离管理的)。

三种状态的区别:1,有没有id。2,id在数据库里和在内存里有没有。

如果没有id,一定是Transient状态。

Teacher t =new Teacher();.现在有个对象new出来了,new完之后在内存有session对象,session对象要求保存t对象,会首先在内存里放一份t对象,其实是里边放了一个引用,指向了t对象,并不是真正放进去了。我们称之为缓存。缓存可以提高访问效率,原来放在硬盘里 硬盘里有一份,放数据库里也就是放到硬盘上了。我想用这个东西的时候每次从硬盘上取,效率很低,我们可以在内存里保留一份,从内存取就可以了。缓存就是内存里的一块区域,里边放着一系列想要读取效率的这样的对象,想引用。save完成之后,在session这个缓存里缓存了对象的id,session里有个map引用,map里有一系列的key,key就是对象的id,指向的是具体的对象,它指向的是value,value是我们的对象。key是id,value是对象的引用。



三种状态的区别:

Transient是内存中的一个对象,刚new出来没id,缓存里没有数据库里也没有。

Persistent内存中有缓存有数据库有,有id。

Detached:内存有缓存没有数据库有。但是数据库和内存对象没有联系。有id。

Transient  save()  Persistent.

猜你喜欢

转载自blog.csdn.net/weixin_40512519/article/details/80962762
今日推荐