10.POJO对象的状态

来源:互联网 发布:天谕流光男性捏脸数据 编辑:程序博客网 时间:2024/05/21 21:37
POJO对象是被Session缓存所管理的,它存在4种状态
如何判断一个对象的状态,可以根据是否有OID,是否被缓存管理,是否在数据库中存在记录来进行判断:

1.     临时状态:
特点:也叫自由态,只存在于内存中,而在数据库中没有相应数据。用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫临时对象;
是否存在OID: 一般情况情况下是不存在的,除非自己管理OID的值。
是否被缓存管理:没有
是否在数据库中存在:没有
Book book = new Book(null,"如何更有节操");

2.     持久化状态
特点:与session关联并且在数据库中有相应数据。已经持久化,加入到了Session缓存中。如通过hibernate语句保存的对象。处于此状态的对象叫持久对象;
是否存在OID: 一定存在OID
是否被缓存管理:有
是否在数据库中存在:有
a. 经过save(book);数据库中一定会有一条记录与之对应。

3. 游离状态
特点:已经持久化,但不在Session缓存中。处于此状态的对象叫游离对象;
是否存在OID: 一定有OID
是否被缓存管理:没有
是否在数据库中存在:有
a. 当执行clear(),evict(),session.close()方法,对象由持久化状态变为游离状态。

4.删除状态
特点:数据库的数据删除。
是否存在OID: 有OID的,但是没有意义,因为数据库数据已经被删除了。主键没有了。对象还保留OID值,没意义。
是否被缓存管理:没有
是否在数据库中存在:没有


0 0