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

Java資料物件(JDO)入門:透明持久化與物件模型設計

     編輯:Java 程式設計入門

為何需要JDO?

在JDO問世前,Java持久化面臨三大困境:序列化缺乏交易/查詢/共享機制;JDBC迫使開發者在物件模型與關聯資料模型間手動映射,喪失OO優勢;EJB CMP則過於笨重,需應用伺服器環境。JDO提供單一物件模型、透明持久化、支援多種資料源(關聯式/物件/檔案)的輕量級方案,甚至可作為EJB底層持久化引擎。

核心契約:可持久化類別的規範

JDO要求持久化類別:

  • 提供無參數建構子(可為private)
  • 欄位使用Java標準型別(String、Date、int等)
  • 關聯關係以java.util.Collection介面表達
  • 無須實作特定介面或繼承基底類別

實戰範例:電影-演員-角色領域模型

定義三個持久化類別:

// Movie.java
public class Movie {
    private String title;
    private Date releaseDate;
    private int runningTime;
    private String rating;
    private Set<Role> cast = new HashSet<>(); // 關聯角色集合
    private Movie() {} // JDO要求的無參建構子
    public Movie(String title, Date release, int duration, String rating, String genres) { ... }
    public void addRole(Role role) { cast.add(role); }
    public Set<Role> getCast() { return Collections.unmodifiableSet(cast); }
    // 日期格式化輔助方法...
}

Actor與Role同理,Role作為關聯實體持有Movie與Actor參考及角色名稱。此設計展現JDO如何以純Java物件圖表達複雜領域關係,完全脫離SQL。

JDO運行期與資料存儲抽象

JDO規範定義PersistenceManager、Query、Transaction等核心介面,實作廠商負責映射至底層資料庫。開發者專注於物件模型設計與業務邏輯,持久化操作簡化為:

PersistenceManager pm = pmf.getPersistenceManager();
Transaction tx = pm.currentTransaction();
tx.begin();
pm.makePersistent(movie); // 透明儲存整個物件圖
tx.commit();

這正是「一次建模,多重部署」的威力所在。

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