jpa實體狀態及舉例

2021-09-02 10:58:29 字數 882 閱讀 7677

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...