首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在JPA和Hibernate中persist()和merge()有什么区别?

在JPA和Hibernate中persist()和merge()有什么区别?
EN

Stack Overflow用户
提问于 2010-12-22 20:20:22
回答 4查看 170.3K关注 0票数 126

Hibernate中persist()和merge()有什么不同?

persist()可以创建UPDATE & INSERT查询,例如:

代码语言:javascript
复制
SessionFactory sef = cfg.buildSessionFactory();
Session session = sef.openSession();
A a=new A();
session.persist(a);
a.setName("Mario");
session.flush();

在这种情况下,查询将生成如下所示:

代码语言:javascript
复制
Hibernate: insert into A (NAME, ID) values (?, ?)
Hibernate: update A set NAME=? where ID=?

因此persist()方法可以生成、插入和更新。

现在使用merge()

代码语言:javascript
复制
SessionFactory sef = cfg.buildSessionFactory();
Session session = sef.openSession();
Singer singer = new Singer();
singer.setName("Luciano Pavarotti");
session.merge(singer);
session.flush();

这是我在数据库中看到的:

代码语言:javascript
复制
SINGER_ID   SINGER_NAME
1           Ricky Martin
2           Madonna
3           Elvis Presley
4           Luciano Pavarotti

现在使用merge()更新一条记录

代码语言:javascript
复制
SessionFactory sef = cfg.buildSessionFactory();
Session session = sef.openSession();
Singer singer = new Singer();
singer.setId(2);
singer.setName("Luciano Pavarotti");
session.merge(singer);
session.flush();

这是我在数据库中看到的:

代码语言:javascript
复制
SINGER_ID   SINGER_NAME
1           Ricky Martin
2           Luciano Pavarotti
3           Elvis Presley
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4509086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档