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

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

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

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

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

選取關聯線套用 <<RelationshipOptions>>:
| 關聯 | cascade | fetch | optional |
|---|---|---|---|
| Invoice → InvoiceItem | ALL (完全控制) | EAGER | false |
| Invoice → Customer | 無 | LAZY | false |


persistence.xml 列出所有 Entity 類別、資料庫連線資訊 (Derby embedded)、openjpa.jdbc.SynchronizeMappings=buildSchema 自動建表。orm.xml 指定 Schema (MYSAMPLE)。org.apache.openjpa.ant.PCEnhancerTask,支援懶載入等進階特性。// 測試範例
EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyModelJPA");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(invoice);
em.getTransaction().commit();
// 查詢驗證...
em.close();

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