OID概述理解
l hibernate用于唯一标识一个对象,标识符。WQ
l Java标识对象:内存地址 (new 两次,内存地址不同,java不同对象)
l 数据库标识记录(行):用主键进行标识。
l hibernate 提供 OID,将java对象 和 表的主键进行 关联。
l hibernate中更关心是数据,而不是java对象本身。hibernate中只要OID相同,认为使用PO对象(持久对象)。OID中存放的表的主键值。
User user1 = new User() ; user1.setUid(1);
User user2 = new User() ; user2.setUid(1);
在hibernate中 user1 和 user2 是两个相同的PO对象。
PO/BO/VO
PO:persistent object ,用于与数据库交互数据。--dao层 (JavaBean + hbm )
BO:Business object 业务数据对象。--service层
VO:Value Object 值对象。--web层
开发中:直接使用JavaBean 描述三个对象
对象之间的状态转换图
对象之间的三种状态之间转换 :
>瞬时态 -----获取直接new就可以
-----转换持久态:save()保存,SaveOrUpdate
-----抓换为托管态:set(ID)就可以
>持久态 -----执行get(),load(),creatQuery(),creatCritreia()获得
都是持久态的对象,执行save()之后转变为持久态
执行update之后也是持久态
-----转换瞬时态 : 当执行delete删除时
-----转换游离态 : 当session关闭closed或者清除所有clear时
>托管态 ------创建并设置ID值,(有OID的值. 数据库有值,session没有管理 )
------转换为瞬时态 : 手动去除OID并且设置为默认值
------转换为持久态 : update()、saveOrUpdate