在 EJB 2.x 規格中,EJB 2.x 實體存取目的置換了 EJB 1.x 存取目的和 EJB 1.x 隔離層次。
有兩個一般方法,將存取目的新增至 Enterprise Bean 2.x:
- 預設存取目的 (Bean 層級):在大部分情況下,應該使用這個預設方法,根據 Bean 層級處理存取目的。
- 方法層級存取目的:只在進階狀況下,才應該使用這個進階方法,根據方法處理存取目的。
若要將預設存取目的 (Bean 層級) 新增至 Enterprise Bean 2.x:
- 切換至 J2EE 視景。
- 在「專案瀏覽器」中,按一下 EJB 專案 > 專案 > ejbModule > META-INF > ejb-jar.xml。 這時會開啟「EJB 部署描述子」視窗。
- 在編輯器的存取頁面上,選取實體
2.x 預設存取目的 (Bean 層級) 區段下的一或多個 Bean,再按一下新增按鈕。
這時會開啟新增存取目的精靈。
- 在存取目的名稱欄位中,從下拉清單選取存取目的類型。
- 選用項目:輸入新存取目的說明。
- 如果要設定持續性,請選取持續性選項勾選框。 有三個持續性選項:
- 如果您選取驗證唯讀資料勾選框,
請從下拉清單中選取讀取-讀取 (read-read) 一致性檢查的選項。
有三個選項:
- NONE 不執行讀取-讀取檢查。
- AT_TRAN_BEGIN 在 ejbLoad 期間,如果資料來自快取,則檢查資料庫,
確定自前次載入後沒有變更 Bean 資料
(在存取目的並行控制屬性適當鎖定下)。
- AT_TRAN_END 在交易結束時,如果沒有變更 Bean,並且現行交易沒有載入它,則檢查資料庫,
確定自前次載入後沒有變更 Bean 資料
(在存取目的並行控制屬性適當鎖定下)。如果已變更資料,則交易失敗。
如需讀取-讀取一致性檢查的範例,請參閱範例:讀取-讀取一致性檢查。
- 如果您選取局部作業勾選框,請從下拉清單中選取局部作業的選項。
有兩個選項:
- NONE 這是預設值,其中資料庫 CMP Bean 的所有持續性屬性都儲存至資料庫,
即使可能只變更持續性屬性欄位的子集也是一樣。
- UPDATE_ONLY 限制只有已修改的 CMP Bean 持續性屬性,才會更新資料庫。
如需局部作業的詳細資料,請參閱儲存器管理持續性的局部作業。
- 如果您選取延遲作業勾選框,請從下拉清單中選取延遲作業的選項。
有三個選項:
- NONE 不延遲。
- CREATE_ONLY 只延遲 ejbCreate 指令,直到下次發生
ejbStore 時,才在資料庫中建立列。
- ALL 延遲所有的 ejbCreate、ejbStore 和 ejbRemove 指令,
直到需要沖寫時,這可能是在 finder 方法之前,或在交易完成之前。
如需延遲作業的相關資訊,請參閱建立儲存器管理持續性的延遲作業。
- 批次作業使用 JDBC 批次指令,在這個特定 Enterprise Bean 所連接的後端資料庫中,插入、更新或刪除列。如需批次作業的相關資訊,請參閱儲存器管理持續性的批次指令。若要選取批次作業:
- 在延遲作業中選取 ALL
(您必須選取 ALL,才能使用批次選項)。
- 勾選批次框。
- 按一下完成。
這時會新增存取目的。若要移除存取目的,請選取它,再按一下移除按鈕。