返回指定的oid 對應的實體類物件,如果這個實體存在於當前的持久化環境,則返回乙個被快取的物件;否則會建立乙個新的 entity, 並載入資料庫中相關資訊;若 oid 不存在於資料庫中,則返回乙個 null。第乙個引數為被查詢的實體類型別,第二個引數為待查詢實體的主鍵值。
與find()方法類似,不同的是,如果快取中不存在指定的
entity, entitymanager 會建立乙個 entity 類的**,但是不會立即載入資料庫中的資訊,只有第一次真正使用此 entity 的屬性才載入,所以如果此 oid 在資料庫不存在,getreference() 不會返回 null 值, 而是丟擲entitynotfoundexception
用於將新建立的 entity 納入到 entitymanager 的管理。該方法執行後,傳入 persist() 方法的 entity 物件轉換成持久化狀態。
如果傳入 persist() 方法的
entity 物件已經處於持久化狀態,則 persist() 方法什麼都不做。
- 如果對刪除狀態的 entity 進行 persist() 操作,會轉換為持久化狀態。
- 如果對游離狀態的實體執行 persist() 操作,可能會在 persist() 方法丟擲 entityexistexception(也有可能是在flush或事務提交後丟擲)。
刪除例項。如果例項是被管理的,即與資料庫實體記錄關聯,則同時會刪除關聯的資料庫記錄。
merge
() 用於處理 entity 的同步。即資料庫的插入和更新操作
同步持久上下文環境,即將持久上下文環境的所有未儲存實體的狀態資訊儲存到資料庫中
設定持久上下文環境的flush模式。引數可以取2個列舉
-flushmodetype.auto 為自動更新資料庫實體,
-flushmodetype.commit 為直到提交事務時才更新資料庫記錄。
獲取持久上下文環境的flush模式。返回flushmodetype類的列舉值
用資料庫實體記錄的值更新實體物件的狀態,即更新例項的屬性值
清除持久上下文環境,斷開所有關聯的實體。如果這時還有未提交的更新則會被撤消。
判斷乙個例項是否屬於當前持久上下文環境管理的實體
判斷當前的實體管理器是否是開啟狀態
返回資源層的事務物件。entitytransaction例項可以用於開始和提交多個事務
關閉實體管理器。之後若呼叫實體管理器例項的方法或其派生的查詢物件的方法都將丟擲 illegalstateexception 異常,除了gettransaction 和 isopen方法(返回
false)。不過,當與實體管理器關聯的事務處於活動狀態時,呼叫 close 方法後持久上下文將仍處於被管理狀態,直到事務完成
1. 建立乙個查詢物件。
2 .createnamedquery (string name)
3. 根據命名的查詢語句塊建立查詢物件。引數為命名的查詢語句
使用標準 sql語句建立查詢物件。引數為標準sql語句字串
使用標準sql語句建立查詢物件,並指定返回結果集 map的 名稱
用於啟動乙個事務,此後的多個資料庫操作將作為整體被提交或撤消。若這時事務已啟動則會丟擲 illegalstateexception 異常
用於提交當前事務。即將事務啟動以後的所有資料庫更新操作持久化至資料庫中。
撤消(回滾)當前事務。即撤消事務啟動後的所有資料庫更新操作,從而不對資料庫產生影響。
使當前事務只能被撤消。
檢視當前事務是否設定了只能撤消標誌。
檢視當前事務是否是活動的。如果返回true則不能呼叫begin方法,否則將丟擲
illegalstateexception 異常;如果返回 false 則不能呼叫 commit、rollback、setrollbackonly 及 getrollbackonly 方法,否則將丟擲
illegalstateexception 異常
談談JPA 04 JPA的常用API
persistence entitymanage ctory entitymanager remove object entity 刪除例項。如果例項是被管理的,即與資料庫實體記錄關聯,則同時會刪除關聯的資料庫記錄。merge t entity merge 用於處理 entity 的同步。即資料庫的...
jpa 跨表 JPA的多表複雜查詢
最近工作中由於要求只能用hibernate jpa 與資料庫進行互動,在簡單查詢中,jpa繼承crudrepository介面 然後利用jpa的方法命名規範進行jpql查詢,然而在進行複雜查詢時,需要繼承jpaspecificationexecutor介面 利用specification 進行複雜查...
jpa 動態sql拼接 JPA的動態查詢拼接
在使用spring jpa提供的方法只能進行簡單的crud,如果遇到複雜的情況就需要我們動態來構建查詢條件了。這裡我們來看使用criteriabuilder如何來構造查詢。核心 criteriabuilder criteriabuilder entitymanager.getcriteriabuil...