探索JPA 和Hibernate 中persist() 和merge() 的區別
在資料持久化領域,JPA(Java Persistence) API )和Hibernate 發揮著至關重要的作用。它們的核心是在資料庫上下文中管理物件的兩個基本方法:persist() 和 merge()。
persist()
persist()方法主要負責在資料庫中建立一個新實體或更新現有實體。它的行為會根據實體的狀態而改變:
使用persist() 的範例說明其雙重功能:
SessionFactory sef = cfg.buildSessionFactory(); Session session = sef.openSession(); A a = new A(); session.persist(a); a.setName("Mario"); session.flush();
在這種情況下,persist() 將首先插入「A」將實體存入資料庫,然後用指定的名稱更新它。
merge()
與 persist() 不同,merge() 僅專注於合併實體的狀態分離實體轉變為託管實體。它的行為更加簡單:
使用merge() 的範例示範其操作:
SessionFactory sef = cfg.buildSessionFactory(); Session session = sef.openSession(); Singer singer = new Singer(); singer.setName("Luciano Pavarotti"); session.merge(singer); session.flush();
執行後,提供的Singer 物件將合併到現有或新建立的託管實體中,從而導致相應的資料庫更改。
結論
Persist() 和 merge() 在 JPA 和冬眠。 persist() 允許插入和更新操作,而 merge() 專門用於將分離的實體合併到託管實體中。了解它們的不同行為對於有效管理資料庫驅動的應用程式中的實體至關重要。
以上是## Persist() 與 Merge():什麼時候應該使用哪種 JPA 方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!