Hibernate的對象有三種狀態,分別是:瞬時態(transient)、持久態(persistent)、游離態(detached)
1.瞬時態的實例可以通過調用save()、persist()或者saveOrUpdate()方法變成持久態
2.游離態的實例可以通過調用 update()、saveOrUpdate()、lock()或者replicate()方法變成持久態
3.save()和update()方法的區別在於前者是將瞬時態對象變成持久態,后者是將游離態對象變成持久態
4.merge()方法可以完成save()和update()方法的功能,它的意圖是將新的狀態合並到已有的持久化對象上或創建新的持久化對象。
5.lock()方法和update()方法的區別,update()方法是把一個已經更改過的脫管狀態的對象變成持久態,lock()方法是把一個沒有更改過的脫管狀態的對象變成持久態
6. persist()方法把一個瞬時態的實例持久化,但是並不保證標識符被立刻填入到持久化實例中,標識符的填入可能被推遲到flush的時間persist()方法保證當它在一個事務外部被調用的時候並不觸發一個INSERT語句
7.saveOrUpdate()方法則是判斷對象是否已經存在,如若不存在,則將這個瞬時態對象變成持久態,如若存在,則將這個游離態對象持久化
8.replicate()方法同樣是將游離態對象持久化,不同的是,假設你的對象的ID是用hibernate 負責生成的,但現在你想在數據庫中插入一條已經指定ID的記錄,這是就需要replicate()方法了