MyEclipse持續性開發教程:用JPA和Spring管理資料(四)

AABBbaby發表於2018-02-27

MyEclipse紅運年貨節 線上購買低至69折!火爆開搶>>

MyEclipse最新版下載

本教程介紹了MyEclipse中的一些基於JPA / Spring的功能。有關設定JPA專案的基礎知識,請先閱讀JPA教程。 本教程主要關注MyEclipse中的JPA-Spring整合以及如何利用這些函式。您將學習到:

  • 為JPA和Spring建立一個專案
  • 反向設計一個資料庫表來生成實體
  • 實現建立,檢索,編輯和刪除功能
  • 啟用容器管理的事務

持續時間:30分鐘

沒有MyEclipse? 現在下載

三、寫一個應用程式

3.3 更新實體

現在程式碼的下一部分可能看起來更長,但這是因為會列印出新的值,並確認記錄已在資料庫中更新。

/* 1. Now retrieve the new product line, using the ID we created */ 
Productline loadedProductline = dao.findById(productlineID);

/*
* 2. Now let's change same value on the product line, and save the
* change
*/
loadedProductline.setTextdescription("Product line for men's shoes.");

TransactionStatus status = txManager .getTransaction(new DefaultTransactionDefinition());
dao.update(loadedProductline);
txManager.commit(status);

/* * 3. Now let's load the product line from the DB again, and make sure
* its text description changed
*/
Productline secondLoadedProductline = dao.findById(productlineID);

System.out.println("*REVISED* Product Line [" + "productLine="
+ secondLoadedProductline.getProductline()
+ ", textDescription="
+ secondLoadedProductline.getTextdescription() + "]");

注意update呼叫是用一個事務封裝的,因為它必須向資料庫寫入一些東西,並且需要防止失敗。

在上面的第3節中,產品線在更新後立即從資料庫載入,並列印出從資料庫返回的值以確認更新。

3.4 刪除一個實體

刪除實體與儲存和更新實體幾乎相同。 工作被封裝在一個交易中,然後DAO被告知要做這項工作。

/* 1. Now retrieve the new product line,               using the ID we created */ 
TransactionStatus status = txManager
.getTransaction(new DefaultTransactionDefinition());
Productline loadedProductline = dao.findById(productlineID);

/* 2. Now let's delete the product line from the DB */
dao.delete(loadedProductline);
txManager.commit(status);

/*
* 3. To confirm the deletion, try and load it again and make sure it
* fails
*/

Productline deletedProductline = dao.findById(productlineID);

/*
* 4. We use a simple inline IF clause to test for null and print
* SUCCESSFUL/FAILED
*/

System.out.println("Productline deletion: "
+ (deletedProductline == null ? "SUCCESSFUL" : "FAILED"));

與上面的updateProductline實現類似,您會注意到事務用於包裝刪除呼叫,然後程式碼嘗試從DB載入實體並確認操作失敗。

注意:事務必須封裝findById和delete方法呼叫的原因是因為由JPA管理的物件必須是同一個事務的一部分。 要刪除載入的物件,它必須在它被載入的同一個事務中,試圖將其刪除。

3.5 執行程式

執行它的輸出如下所示:

輸出

紅色文字是可以忽略的預設日誌訊息(如果要控制日誌記錄,可以設定自定義log4j.properties檔案)。 在日誌警告的下面,您會看到兩條來自TopLink(JPA實現庫)的訊息,然後是三條訊息全部來自實現。

第一條訊息列印出已新增的新產品線資訊,第二條更新訊息並列印新資訊,最後一條訊息從資料庫中刪除並列印確認訊息。

更多資訊敬請訪問MyEclipse中文網>>

相關文章