用MyEclipse JPA建立專案(三)

AABBbaby發表於2018-03-16

MyEclipse 3.15 Style——線上購買低至75折!火爆開搶>>

MyEclipse最新版下載

本教程介紹了MyEclipse中的一些基於PA的功能。 閱讀本教程時,瞭解JPA和實體對映如何與註釋一起工作的基本概念將會很有幫助。 在本教程中,您將學習如何:

  • 為JPA設定一個專案
  • 連線到資料庫
  • 反向設計一個資料庫表來生成實體
  • 實現建立、檢索、編輯和刪除功能

持續時間:30分鐘

沒有MyEclipse? 現在下載

四、編寫應用程式

由於MyEclipse生成了大量的程式碼,因此您可以快速專注於編寫“業務邏輯”,或者更具體地說,“實際執行的程式碼”。在本節中,您將編寫一個帶有main方法的Java類,該方法將Productline插入到資料庫中,檢索並更新它,然後刪除。使用這段程式碼,您應該能夠看到在自己的應用程式中使用JPA實體是多麼容易,而無需編寫JDBC程式碼或任何其他永續性程式碼。

4.1 建立一個類

1. 右鍵單擊com.myeclipseide.jpa包,然後選擇New>Class。

2. 在Name欄位中輸入RunJPA,選擇Public static void main核取方塊,然後單擊Finish。

生成的類

在生成新的類和main方法後,您需要編寫程式碼來成功處理Productline的例項。

注意:下面的程式碼看起來很長很複雜,但這是因為我們試圖在一個程式碼塊中顯示四個不同的示例。 如果您檢視每個操作(儲存,載入,更新,刪除),它們都不會包含多行程式碼。

3. 將以下程式碼新增到main方法中,然後按Ctrl + S進行儲存。

/* 1. Create a reference to our ID */ 
String productLineID = "Men's Shoes";

/* 2. Create a new Productline instance */
Productline newProductline = new Productline(
productLineID,
"Shoes for men.", "Men's Shoes", null);

/* 3. Create a DAO instance to use */
ProductlineDAO dao = new ProductlineDAO();

/* 4. Store our new product line in the DB */
EntityManagerHelper.beginTransaction();
dao.save(newProductline);
EntityManagerHelper.commit();

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

/* 6. Print out the product line information */
System.out.println("*NEW* Product Line [productLine="
+ loadedProductline.getProductline() + ", textDescription="
+ loadedProductline.getTextdescription() + ", image="
+ loadedProductline.getImage() + "]");

/* * 7. Now let's change same value on the product line, and save the
* change
*/

loadedProductline.setTextdescription("Product line for men's shoes.");
EntityManagerHelper.beginTransaction();
dao.save(loadedProductline);
EntityManagerHelper.commit();

/*
* 8. Now let's load the product line from the DB again, and make sure
* it text description changed
*/

Productline secondLoadedProductline = dao.findById(productLineID); System.out.println("*REVISED* Product Line ["
+ "productLine=" + secondLoadedProductline.getProductline()
+ ", textDescription=" + secondLoadedProductline.getTextdescription()
+ ", image=" + secondLoadedProductline.getImage() + "]");

/* 9. Now let's delete the product line from the DB */
EntityManagerHelper.beginTransaction();
dao.delete(secondLoadedProductline);
EntityManagerHelper.commit();

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

Productline deletedProductline = dao.findById(productLineID);

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

System.out.println("Productline deletion: "
+ (deletedProductline == null ? "SUCCESSFUL" : "FAILED"));
注意: 將事務資料庫的程式碼片段換成事務是一個好主意,所以如果操作失敗(例如DB崩潰),那麼試圖在事務中發生的所有更改都會回滾到它們的原始值,而不是隻有一半 工作完成。

上面的程式碼看起來令人望而生畏,但它背靠背做了很多簡單的事情。 例如,如果您只想將新專案儲存在資料庫中,則只需要程式中步驟1-3的程式碼,這些程式碼將三行程式碼相減(減去註釋)即可。 以下是每個編號部分的細目:

  1. PRODUCTLINE表使用產品線的名稱作為主鍵。 為了使本教程更容易遵循,我們在字串中定義產品線名稱,並在整個程式碼中重複使用(建立並儲存產品線,然後再檢索兩次)。 您可以多次輕鬆輸入“Men’s Shoes”,我們認為這使得教程更易於遵循。
  2. 這將建立一個由MyEclipse生成的Productline POJO的新例項,並將插入到資料庫中。 為了本教程的目的,這些值並不重要,所以我們只是使用示例資訊。
  3. 這將建立一個要使用的DAO例項。 資料庫訪問需要DAO,這也是由MyEclipse生成的。
  4. 這告訴DAO將新的Productline儲存在資料庫中。 因為你要寫一些東西給資料庫,所以把儲存的呼叫包裝在一個事務中。
  5. 為了確保Productline正確儲存,使用步驟1中定義的ID,我們要求DAO獲取Productline,並將結果分配給一個全新的物件,以確保載入的內容來自資料庫。 (我們可以將這個值賦給newProductline,但是為了本教程的目的,我們希望非常明顯地知道物件來自哪裡以及意外地在程式碼中載入的例項不存在之前)。
  6. 這將列印出載入實體的值,以確保它是剛儲存在資料庫中的值。
  7. 這會更改剛剛載入的POJO上的值,以顯示更新記錄的工作方式。 然後使用DAO將更改提交回資料庫。 再次,這個操作被封裝在一個事務中,以確保安全地更改資料庫。
  8. 就像在第5步中一樣,使用步驟1中定義的ID從資料庫重新載入記錄,以確保更新操作有效。 POJO值將被列印出來,以確保新的描述被儲存到資料庫中。
  9. 這顯示瞭如何從DB中刪除記錄。 因為這需要對資料庫進行更改,所以此程式碼被封裝在事務中。
  10. 與步驟8和步驟5類似,為了證明刪除起作用,我們嘗試使用我們提供的ID從資料庫載入實體。 這個操作應該會失敗,因為我們已經刪除了Productline。 從DAO獲得結果後,將使用嵌入式IF子句列印語句以確保結果為空。

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

相關文章