物件導向設計將存取機制視為獨立物件,透過 O/R Mapping 實現。J2EE 四層架構(Client、Web、Business、EIS)讓 Business 層專注業務邏輯,EIS 層交由容器管理。
Castor 專案提出持久層概念,介於 Business 與 EIS 之間,工具稱為 JDO(Java Data Objects)。優點:存取速度快、彈性高、支援多資料庫、工具可抽換。但實測發現缺陷:
Apache DB 專案下的 ObjectRelationalBridge (OJB),同樣提供 O/R Mapping,架構支援多種儲存媒體。實測功能對比:
| 功能 | Castor JDO | Jakarta OJB |
|---|---|---|
| 基本 CRUD | 支援(PK 重複拋錯) | 支援(PK 重複無錯誤也不寫入,需注意) |
| 1:1 參考 | 可增改,刪除主物件不連帶刪除被參考物件 | 同,但可設定 auto-delete=true 連帶刪除 |
| 繼承映射 | 支援三種策略 | 支援前兩種,第三種建議用 1:1 參考替代 |
| 1:n 集合 | 支援 ArrayList、Map、Set 等 | 除 Map 外皆支援,含自訂集合型別 |
| n:m 參考 | 支援 | 支援 |
| 多型集合 (Interface) | 不支援 | 支援 |
| 多型集合 (Super Class) | 不支援 | 支援 |
| 1:1 Lazy Loading | 不支援 | 支援 |
| 集合 Lazy Loading | 僅支援 Collection 型別 | 支援所有可用型別 |
Jakarta OJB 功能較完整,尤其多型集合支援與無死結問題為關鍵優勢。持久層架構雖優雅,但效能仍是關鍵。現代 JDO 工具已提供快取、PreparedStatement、Lazy Loading 等加速機制,架構成熟度大幅提升,不再是「無實用性的藝術品」。