pro JPA2 精通java持久化API 第六章

2021-08-05 22:57:18 字數 1056 閱讀 4060

1.什麼是持久化上下文,持久化上下文是乙個託管實體的集合。

個人理解,持久上下文,是乙個集合,然後裡面有很多實體的例項,由實體管理器進行操作。

2.事務範圍的持久化上下文,它是容器在事務期間建立,事務完成時關閉。

我們專案中使用的spring+jpa(hibernate實現)

,在增刪改的時候,持久化上下文必須和事務繫結,負責會出錯。因為(所有容器託管的實體管理器均依賴jta事務,因為他們可以使用事務作為跟蹤持久化上下文的方式)

也就是只有當實體是由乙個持久化上下文管理的時候,才可以增刪改。意味著,只有事務範圍內的實體管理器才能增刪改

find()用來尋找 並且返回實體(託管狀態);

而getreference()返回的是乙個**。只是訪問了其主鍵,如果找不到這個實體,異常,如果getreference()返回的實體不是被託管的,那麼久不能安全使用,

也就是需要在乙個持久化上下文中。

級聯操作

@entity

public class employee5

employee5 employee5 = new employee5();

adress adress = new adress();

adress.name="ad";

employee5.adress= adress;

entitymanager.persist(employee5);

entitymanager.flush();

在持久化employee5物件的時候也會持久化adress物件。(設定了級聯操作,級聯操作是單向的,如果打算在持久化adress的時候也持久化employee那麼在adrees也要加cascade=cascadetype.persist)

clear()可以用來清除持久化上下文,

重新整理持久化上下文有兩種,第一是在事務提交時,第二是在實體管理器呼叫flush()方法。

merge()方法會產生乙個新的被託管的例項,是新的例項被託管,

employee  e =entitymanager. merge(employee);返回的是乙個和原employee不同的物件,的新例項e。

Java使用RabbitMQ(四) 訊息持久化

訊息持久化 訊息確認,保證了消費者die時,訊息不丟失。而訊息持久化,則是為了保證rabbitmq 怠機時,訊息不丟失。訊息持久化需要以下操作 boolean durable true channel.queuedeclare hello durable,false,false,null 需要注意的...

Java持久化框架Mybatis遍歷map

在mybatis中,傳入的引數實體結構是 data public class alarmsignalconditiondto而intervaltimedto的結構是 data public class intervaltimedto public intervaltimedto string sta...

BPEL例項執行 2 持久化配置

activebpel引擎連資料庫oracle 10g,資料庫持久化配置。activebpel的引擎中的doc裡有個叫persistent set的檔案,現整理如下。serlvet容器配置 tomcat5.x 我使用的是tomcat5.0.28版本。http tomcat.apache.org 安裝t...