Hibernate 中的 merge方法何解? 他说的就是如果没有该条记录,则会被创建;如果有该条记录,但内容有变,则会被修改;相当于save or update 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那为什么有了saveorupdate()方法,还要创建这个merge()方法呢,有什么区别? merge 和saveOrUpdate不一样,当session中某持久化对象有id相同的两个纪录时,必须用merge,merge会在保存之前来合并记录,不然会报错。合并记录后的动作和saveOrUpdate一样。 主要的区别在于POJO对象的状态!!!update或者saveorupdate后,POJO的状态为持久态而merge后,对象的状态仍然为托管状态!这个区别牵连出的区别非常大,可以自己在开发中慢慢体会 没错merge是将要持久化的对象cope一份 然后对副本进行持久化操作好象有个方法persist也是一样的 如果session中存在相同持久化标识(identifier)的实例,用用户给出的对象的状态覆盖旧有的持久实例 如果session没有相应的持久实例,则尝试从数据库中加载,或创建新的持久化实例,最后返回该持久实例 用户给出的这个对象没有被关联到session上,它依旧是脱管的 重点是最后一句:当我们使用update的时候,执行完成后,我们提供的对象A的状态变成持久化状态但当我们使用merge的时候,执行完成,我们提供的对象A还是脱管状态,hibernate或者new了一个B,或者检索到一个持久对象B,并把我们提供的对象A的所有的值拷贝到这个B,执行完成后B是持久状态,而我们提供的A还是托管状态 说的很精辟!我有一个疑问!就是想问一下!那个a diffrent object of the same id of the session(凭着记忆想的) 这种情况会指的出现在同一个session还是两个session啊 【求帮助】初学用java编写一个指纹考勤程序 菜鸟问题:java中的方法内参数如何互相调用 java replace怎么样使用正则表达式 大家帮帮我啊 有哪位了解"北京东方国信电子有限公司"的吗? 时间格式转化问题!急! 学J2EE遇到的问题! 求救: Resin自己的数据库连接不成功,jndi-name要在哪里配置? 关于Jbuilder7 与 WebLogic7.0整合后出现的问题 部署EntityBean不成功,帮忙给看一看,先谢过了.! JAVA抓取方面关于解析WML页面问题?? 做了一次数据库迁移,报错,invalid identifier ,重新连接就库正常
而merge后,对象的状态仍然为托管状态!这个区别牵连出的区别非常大,可以自己在开发中慢慢体会
好象有个方法persist也是一样的
如果session没有相应的持久实例,则尝试从数据库中加载,或创建新的持久化实例,最后返回该持久实例
用户给出的这个对象没有被关联到session上,它依旧是脱管的
重点是最后一句:
当我们使用update的时候,执行完成后,我们提供的对象A的状态变成持久化状态
但当我们使用merge的时候,执行完成,我们提供的对象A还是脱管状态,hibernate或者new了一个B,或者检索到
一个持久对象B,并把我们提供的对象A的所有的值拷贝到这个B,执行完成后B是持久状态,而我们提供的A还是托管状态