2011-02-03 117 views
1

我想知道爲什麼ORM如此受歡迎,每個人都在使用JDO和JDA規範的ORM實現,而不是使用實現這些規範的對象數據庫。使用Object數據庫的性能要好得多。可以將ORM +關係數據庫視爲對象關係數據庫管理系統嗎?

objectdb(JDO,JPA) db4o(JDO)

我說得對,如果我說,這是因爲開發人員需要使用他們的應用程序都對象模型和關係模型?

ORDBMs呢?是否有任何ORDBM(值得一試),或者可以將對象關係映射與關係數據庫一起考慮爲ORDBM?

+1

因爲沒有人因爲購買Oracle而被解僱;) – Gugussee 2011-02-03 16:17:19

+0

另外請注意,大多數「OO程序」根本就沒有做OO。以這種方式來看待它:* equals *和* hashCode *它們在Java中完成的方式與OO從根本上不兼容(這在Joshua Bloch的*「Effective Java」*中很好地解釋,並且在Bill Venners/Martin關於Artima等的Odersky訪談)[這是一個**事實**順便說一句,沒有必要爭論:在非final類中接受equals/hashCode合約是不可能的,接口也有問題]。然而,幾乎沒有人在Java中使用* equals *和* hashCode *。爲什麼?因爲大多數Java程序不是真正的面向對象程序。 – Gugussee 2011-02-03 16:21:49

回答

3

爲什麼人們使用OR映射器而不是對象數據庫使用RDBMS的主要原因是RDBMS深深紮根,深入理解並得到每個人的支持。如果你使用一個對象數據庫,那你有問題

  • 找人使用現有的工具進行報告,以支持它
  • ,備份等
  • 有其他應用程序訪問數據

可能還有很多疑問(無論是否合理),對象數據庫是否真的可以在真實的文字場景中提供相同或更好的性能和安全性。

1

根據我的經驗,使用對象數據庫導致代碼少得多,而且項目更清潔。

它使RDBMS + ORM(LINQ-to-Entities)的6周學習曲線與對象數據庫(db4o)的1周學習曲線有所不同。

0

您可能熟悉的常用DBMS(例如Oracle,SQL Server,DB2,MySQL,PostGreSQL)不是關係型的。它們是基於SQL模型的,儘管它在某些方面類似於關係模型,但它是完全不同的。

一個對象關係 DBMS意味着與關係 DBMS相同的事情。這是另一種說法,即RDBMS原則上將支持任何無限制的數據類型和關係操作。 O/R Mapping軟件確實只解決了SQL DBMS不能很好地實現的事實。