Posted on 2008-08-14 12:27
☆ 阅读(171)
评论(0) 编辑 收藏 所属分类:
Hibernate
Hibernate基础知识:
Hibernate 是一种常见的 ORM(及对象/关系映射Object/Relational Mapping)框架。
简单的说就是将关系数据库中的表与表关系的映射到java中的对象与对象之间,其内部封装了通过JDBC操作数据库的操作。
Hibernate的对象有3中状态:Transient(瞬时状态)、 Persistent(持久状态)、Detached(脱管状态)。
在持久层的对象称为PO(persistent Object),瞬时对象和脱管对象称为VO(Value Object)。他们之间可以相互转换。
瞬时对象:
由new为其开辟内存空间的Java对象。也就是平时我们所熟悉的普通Java对象。
特点:a)不和Session实例关联 b)数据库中没有和瞬时对象所关联的记录
c)通过Session的save()或saveOrUpdate()可以把瞬时对象和数据库关联起来,同时此瞬时对象也就变成了持久化对象。
持久化对象:
持久化的实例在数据库中有对应的记录,并拥有一个持久化标识。持久化的实例可能是刚刚由瞬时对象保存而来的,
或者是被加载的。
特点:a)和Session实例关联 b)数据库中有和持久化对象关联的记录
c)通过Session的close()、clear()、evict()之后,持久化对象就变成了脱管对象。
虽然拥有数据库的id标识,但是已经不受Hibernate的持久层管理,这时与瞬时对象本质上相同,不过是多了一个id标识而已。
脱管对象
与持久化对象的关联的Session被关闭之后,对象就变成了脱管对象。
特点:a)本质上和瞬时对象相同。b)只是比瞬时对象多了一个数据库的id标识。
c)一旦脱管对象通过update()、saveOrUpdate()、lock()等方法再度与持久化层关联。则又变成了持久化对象。