首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

RSA 7.5 UML-to-JPA 轉換:模型驅動加速持久層開發

     編輯:Java 相關知識

背景:JPA 開發的痛點

JPA 標準化了 ORM API,但實務上仍面臨:配置檔/註解維護繁瑣、模型變更需同步修改代碼與映射、缺乏集中管理機制。RSA 7.5 內建 JPA Transformation,允許在 UML 類別圖上直接配置 JPA 語義,自動生成帶註解的 Entity 類別,實現模型驅動開發 (MDD),大幅減少迭代中的重複勞動。

準備工作:範例領域模型

超市小票系統:Invoice (小票) 1:N InvoiceItem (明細),Invoice N:1 Customer (會員)。InvoiceItem 繼承體系:PriceItem、DiscountItem、CreditItem。

範例對象模型

步驟 1:套用 JPA Transformation Profile

在模型 Package 右鍵 → UML Properties → Profiles → 選擇 JPA Transformation。此 Profile 定義了 Entity、Id、Column、Inheritance、RelationshipOptions 等 Stereotype,對應 JPA 註解。

套用 Profile

步驟 2:配置核心 Stereotype

Entity & Id

  • 類別套用 <<Entity>>,屬性預設即可(表名=類別名)。
  • 主鍵屬性套用 <<Id>> + <<GeneratedValue>>,策略選 AUTO (全域唯一)。

Entity Stereotype Id & GeneratedValue GeneratedValue 策略

Column 細節

Decimal 型別屬性設定 precision=12, scale=2;String 採預設長度 255。可透過 ColumnDefinition 自訂 DDL。

Column 設定

繼承策略

父類別 InvoiceItem 套用 <<Inheritance>>,策略選 JOINED (各子類別獨立表,共享主鍵,正規化程度高)。子類別可設 <<DiscriminatorValue>>。

Inheritance 設定

關聯關係

選取關聯線套用 <<RelationshipOptions>>:

關聯cascadefetchoptional
Invoice → InvoiceItemALL (完全控制)EAGERfalse
Invoice → Customer無LAZYfalse

關聯配置

步驟 3:建立並執行轉換配置

  1. Menu: Modeling → Transform → New Configuration → UML-to-JPA。
  2. Source: 選範例模型;Target: 建立 JPA Project (SampleModelPersistence),Runtime 選 None,Configuration 選 Utility JPA project with Java 5.0。
  3. Properties: 關閉 NamedQuery 自動生成、開啟 equals/hashCode、集合統一用 List。
  4. 執行模式選 Conceptual (正向工程)。

選擇轉換 建立目標專案 JPA 專案設定 轉換屬性 集合配置 執行轉換

步驟 4:生成代碼後的配置與測試

  • 編輯 persistence.xml 列出所有 Entity 類別、資料庫連線資訊 (Derby embedded)、openjpa.jdbc.SynchronizeMappings=buildSchema 自動建表。
  • 編輯 orm.xml 指定 Schema (MYSAMPLE)。
  • 配置 編譯期增強 (PCEnhancer):專案加入 Ant Builder 執行 org.apache.openjpa.ant.PCEnhancerTask,支援懶載入等進階特性。
  • 撰寫 JUnit 測試驗證持久化流程。
// 測試範例
EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyModelJPA");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(invoice);
em.getTransaction().commit();
// 查詢驗證...
em.close();

JPA jar 設定 Derby jar 設定 Builder 設定 Ant Builder 細節

總結

RSA 7.5 的 UML-to-JPA 轉換將 JPA 元數據管理提升至模型層,配合自動化生成與增強,讓開發者專注於領域邏輯而非重複的映射代碼。適合自頂向下及迭代式開發,顯著提升生產力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved