jpa實體有4種狀態,1)新建態 2) 託管態 3)游離態 4)刪除態
通過**分別介紹這4種狀態(該文基於jpa入門)
新建態(沒有主鍵,不與持久化上下文關聯)即new 出的物件(但不能指定id的值,若指定則是游離態而非新建態)
託管態(有主鍵,和持久化上下文關聯,資料中有對應記錄,不可持久化)
游離態(有主鍵,未和持久化上下文關聯)
刪除態(有主鍵,未持久化上下文關聯,資料中有對應記錄,可以持久化)(可能理解有偏差,僅供參考)
四種狀態的轉換圖如下:
其中刪除態是否在持久化上下中存在些爭議,通過**驗證(基於jpa 入門):
@test
public void testpersistent()
執行結果:
hibernate:
select
person0_.id as id1_0_0_,
person0_.name as name2_0_0_
from
tb_person person0_
where
person0_.id=?
true
false
hibernate:
delete
from
tb_person
where
id=?
呼叫remove 方法後,contains返回false,說明未在持久化上下文中。由於此時事務未提交,且沒有呼叫flush方法,還沒有執行delete 語句。 JPA實體註解
entity name entityname 必須,name為可選,對應資料庫中一的個表 table name catalog schema 可選,通常和 entity配合使用,只能標註在實體的class定義處,表示實體對應的資料庫表的資訊 name 可選,表示表的名稱。預設地,表名和實體名稱一致,...
JPA實體註解
jpa實體註解用例專案位址 參考部落格 關係的擁有方 即many的一方 負責關係的維護,在擁有方建立外來鍵會用到joincolumn。列舉使用manytoone進行實體註解,如建立乙個分類樹形結構的實體。當前實體中manytoone與onetomany對應的實體都是本身 author lx enti...
jpa實體繼承問題
jpa的繼承註解一般有四種 inheritence 此註解應用於根實體類以定義繼承策略。如果沒有使用此注釋定義策略型別,那麼它遵循單錶戰略。discriminatorcolumn 鑑別器屬性將乙個實體與另乙個實體區分開來。因此,該注釋用於提供鑑別器列的名稱。僅需要在根實體類上指定此注釋。discri...