相关疑难解决方法(0)

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

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

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

SessionFactory sef = cfg.buildSessionFactory();
Session session = sef.openSession();
A a=new A();
session.persist(a);
a.setName("Mario");
session.flush();
Run Code Online (Sandbox Code Playgroud)

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

Hibernate: insert into A (NAME, ID) values (?, ?)
Hibernate: update A set NAME=? where ID=?
Run Code Online (Sandbox Code Playgroud)

所以persist()方法可以生成插入和更新.

现在merge():

SessionFactory sef = cfg.buildSessionFactory();
Session session = sef.openSession();
Singer singer = new Singer();
singer.setName("Luciano Pavarotti");
session.merge(singer);
session.flush();
Run Code Online (Sandbox Code Playgroud)

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

SINGER_ID   SINGER_NAME
1           Ricky Martin
2           Madonna
3           Elvis Presley
4           Luciano Pavarotti
Run Code Online (Sandbox Code Playgroud)

现在使用更新记录 merge()

SessionFactory sef = …
Run Code Online (Sandbox Code Playgroud)

java orm entity hibernate jpa

115
推荐指数
3
解决办法
16万
查看次数

标签 统计

entity ×1

hibernate ×1

java ×1

jpa ×1

orm ×1