hibernate中update和merge的区别

 我来答
匿名用户
2016-08-23
展开全部
  实际上,这两个方法,是有很大区别的
  首先,对于一个处于detatch状态的实体对象来说,要将其中的修改,合并到数据库中,有两种方法,一种方式,是调用update(),另一种方式是调用merge()
  当调用update()时,首先要取保目标session中,不包含同样id的实体对象的引用,如果有的话,会抛出异常,完成update()方法后,这个实体对象从detatch状态,转换为persistent状态,在session提交前,后续对其的修改,都会被合并到数据库中。
  当调用merge()对象时,无需考虑session中是否已经包含同样id的实体对象,如果session中没有同样id的实体对象,hibernate会通过select语句,从数据库中查询出对应对象,如果数据库中没有对应对象,就新建一个。
  同时,完成merge()操作后,会返回数据库中对应的persistent状态对象,而原有的,作为参数传入的实体对象,仍然是detatch状态,后续代码对其的修改,无法合并到数据库中。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式