hibernate 读书笔记

 1hibernate 实体对象有三种状态 自由状态(Transient)持久状态(Persistent)游离状态(Detached)

 关于这三种状态的区别:P状态 即跟session实例关联了 已经有了相对应的数据库中的主键值,所以对象处于该状态save或者updata 等都直接改变数据库中的值。而T状态跟D状态则不会直接改变数据库中的值,T状态是仅仅实例化一个VO对象而没有跟session实例进行任何关联则该对象处于自由状态,对于D对象则是由于与session实例相关的对象进行完持久化操作后关闭了session得到的对象状态,此时该对象有对应到数据库里的主键,可以与session实例相关把他由游离态转变为持久态。

注意:当一个对象处于持久态后被删除后,该对象虽然有数据库主键值,但是数据库中已经找不到与之相对应的记录,所以当一个持久态的对象在执行完delete方法后,就转入自由态而非游离态。游离态是该对象持有的主键可以对应到数据库里的一条记录。

2vo和po

我们把处于自由态和游离态的对象叫vo 而处于p状态的对象叫po

vo是相对独立的实体对象。在hibernate里处于非管理状态,而po是有hibernate纳入到它的实体管理器的对象代表了与数据库中某条记录对应的hibernate实体po的变化在事务提交时将反应到实际的数据库中。

如果一个po与session实例分离那么此时它就变为一个vo。为了避免在项目开发的过程在表示层出现po传值

可以用Apache jakarta Commons Beanutils 的复制属性的方法。

举例说明:Tuser user = new Tuser();

                   Tuser anotherUser =new Tuser();

  try{

Beantils.copyProperties(anotherUser,user);

System.out.println(antherUser.getName());

}catch(IllegalAccessExption e){

e.peintStackTrace();

}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值