程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2EE >> SDOvsEJB 3.0詳細比較

SDOvsEJB 3.0詳細比較

編輯:J2EE

其實,SDO2和EJB3(也稱Java Persistence API - JPA) 規范之間差異還是很大的,與其說它們之間是競爭關系,倒不如說互補更為合適。

SDO野心很大,它妄圖為各種SOA架構下的數據類型提供一個統一而靈活的API。EJB3則著眼於基於ORM的新型數據持久化技術,讓EJB變得更簡單,期間它還得到了來自Hibernate和Oracle ORM工具開發者的支持。

支持的語言

◆EJB 3.0僅用於Java
◆SDO API有著Java和C++兩個版本, 但可以用其他語言實現(現在有PHP版本的). SDO定義了一套SDO的數據類型,確保了不同數據源之間和不同語言之間的可移植性。倒目前為止,SDO已有Java, C++, 和 PHP三個版本. 而EJB 3.0 僅面向Java,沒有多語言的兼容性。

數據類型和格式

◆EJB 3.0 的數據持久化著眼於數據庫中的關系型數據。
◆SDO 面向的是各種類型的數據,關系型數據只是其中的一種。開發人員了解SDO API後,可以訪問任何SDO實現所支持的數據類型。除了有統一的數據訪問API來從各種數據源讀取數據以外,SDO還同時有統一的訪問數據源的元數據的 API。其中,DataGraph和DataObject接口是SDO提供用來訪問數據的,Type和Property接口則提供了訪問元數據的API。

EJB 3.0 基於ORM, SDO關注數據

◆EJB 3.0 非常依賴ORM技術,而ORM技術在設計是為了將java對象持久化到關系型數據庫(也稱作‘邏輯優先’方式)或者是在Java對象和已有數據庫間做映射(也稱作‘意大利面條’方式).
◆SDO 采用 \'數據優先\' 的方式, 它假定數據庫可以被優化(和范式化),並且比上層業務層有更長的生命周期。基於數據庫是數據焦點的假定,FireStorm/SDO 將數據庫結構反向工程以生成持久化代碼。

SDO 是面向SOA架構的


◆EJB 3.0 是用於傳統的單個Java應用,通常是C-S架構(譯者按:這點牽強,不是很贊同)
◆SDO 支持脫機應用模型的概念,這非常適合SOA的架構。脫機狀態的DataGraph意味著可以不鎖數據庫表,因為所有修改都是離線修改。

SCA 和 J2EE 規范


◆EJB 3.0 是JEE (J2EE的新叫法)的一部分, JEE是過去幾年主要的應用部署平台
◆最新版本的SDO規范同SCA規范一同發布了。SCA實現了分布式SOA架構下服務之間的點到點互動。SCA是業界對微軟的 Indigo/WCF 戰略的強有力的回應,也許是這兩年 SOA/Web Services 上最重要的發展。

緊耦合和松耦合

◆EJB 3.0 是嵌入式,和應用耦合緊密。
◆SDO 的實現可以設計成適用於輕量級以及分布式的架構。SDO規范同時允許靜態(強類型)調用和動態(弱類型)調用。

所以,由於目標和特性上的這些差異,不能說EJB3或SDO2哪個是更好的持久化規范,不過,我們可以從中得到一些思路:
◆如果你開發的是一個傳統(非SOA)應用,用的是關系型數據庫且全部用Java,那麼EJB3是個不錯的選擇。
◆如果你使用SOA架構進行開發,或者需要訪問不同類型的數據,那麼SDO是個不錯的選擇。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved