Sự khác biệt giữa Kiên trì () và merge () trong Hibernate là gì?
persist()
có thể tạo truy vấn CẬP NHẬT & CHÈN, ví dụ:
SessionFactory sef = cfg.buildSessionFactory();
Session session = sef.openSession();
A a=new A();
session.persist(a);
a.setName("Mario");
session.flush();
trong trường hợp này truy vấn sẽ được tạo như thế này:
Hibernate: insert into A (NAME, ID) values (?, ?)
Hibernate: update A set NAME=? where ID=?
vì vậy persist()
phương pháp có thể tạo một Chèn và một Cập nhật.
Bây giờ với merge()
:
SessionFactory sef = cfg.buildSessionFactory();
Session session = sef.openSession();
Singer singer = new Singer();
singer.setName("Luciano Pavarotti");
session.merge(singer);
session.flush();
Đây là những gì tôi thấy trong cơ sở dữ liệu:
SINGER_ID SINGER_NAME
1 Ricky Martin
2 Madonna
3 Elvis Presley
4 Luciano Pavarotti
Bây giờ hãy cập nhật bản ghi bằng merge()
SessionFactory sef = cfg.buildSessionFactory();
Session session = sef.openSession();
Singer singer = new Singer();
singer.setId(2);
singer.setName("Luciano Pavarotti");
session.merge(singer);
session.flush();
Đây là những gì tôi thấy trong cơ sở dữ liệu:
SINGER_ID SINGER_NAME
1 Ricky Martin
2 Luciano Pavarotti
3 Elvis Presley