Hibernate修改addMate方法
创始人
2024-06-07 21:30:41
0

本文向大家介绍Hibernate修改addMate方法,可能好多人还不了解addMate方法,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。

在Hibernate中,最核心的概念就是对PO的状态管理。一个PO有三种状态:

1、未被持久化的VO,此时就是一个内存对象VO,由JVM管理生命周期

2、已被持久化的PO,并且在Session生命周期内,此时映射数据库数据,由数据库管理生命周期

3、曾被持久化过,但现在和Session已经detached(分离的)了,以VO的身份在运行

这种和Session已经detached的PO还能够进入另一个Session,继续进行PO状态管理,此时它就成为PO的第二种状态了。这种PO实际上是跨了Session进行了状态维护的。

当你你需要Hibernate修改addMate方法时,可以使用一下方法:

  1. public void addMate(Cat cat, Mate mate) {  
  2.  
  3. Session session = ...;  
  4. Transacton tx = ...;  
  5. session.saveOrUpdate(cat);  
  6. cat.addMate(mate);  
  7. tx.commit();  
  8. session.close();  
  9. };  

如上,如果业务层的程序员传进来的是一个已经持久化过的PO对象,那么Hibernate会更新cat对象(假设业务层的程序员在Session外面修改过cat的属性),如果传进来的是一个新new出来的对象,那么向数据库save这个PO对象。

BTW: Hibernate此时究竟采取更新cat对象,还是save cat对象,取决于unsave-value的设定。

这样,业务层的程序员就不必再操心PO的状态问题了,对于他们来说,不管cat是new出来的对象,只是一个VO也好;还是从数据库查询出来的的PO对象也好,全部都是直接Hibernate修改addMate方法就OK了:

  1. daoimple.addMate(cat, mate);  

这便是saveOrUpdate的作用。

【编辑推荐】

  1. 描述Hibernate检查id字段
  2. Hibernate Template简单描述
  3. Hibernate DetachedCriteria学习经验
  4. 概述Hibernate equals()方法
  5. Hibernate使用Person对象

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...