2013-10-22 259 views
0

我有一個關於在例如Java中使用對象關係數據庫的理論問題。我知道有像ORM(例如:Hibernate)這樣的東西提供映射數據庫表到類,但我也可以通過JDBC(通過Java創建連接和執行SQL查詢)進行操作。有沒有辦法使用第二種方法(普通JDBC機制)在對象數據庫中執行查詢? 感謝您的幫助,也許是一些樣品;)關係對象數據庫映射

回答

1

ORM是在SQL之上的包裝。他們不是火箭科學。如果你不喜歡對象查詢Languagues(如HQL),是的,你可以(使用方法createSQLQuery(...)肯定在Hibernate)做純SQL查詢

編輯:

基於裏卡多評論,如果你正在尋找關於對象數據庫的SQL,AFAIK,我認爲目前沒有任何支持。

+0

我認爲Caro2意味着如果有可能使用JDBC查詢OBJECT數據庫,而不是可以使用JDBC查詢RELATIONAL數據庫。 – Ricardo

+0

當然,我想到了這種方法。對於任何不確定情況我都很抱歉... – caro2

0

我不認爲你可以使用JDBC訪問純粹的面向對象數據庫。並非沒有將SQL轉換爲對象查詢語言的驅動程序(即,與ORM框架所做的相反)。

0

有真正的面向對象的數據庫,稱爲對象存儲。將它們看作是通常駐留在內存中的類的持久存儲。如果這就是你所說的「有什麼辦法使用第二種方法在對象數據庫中進行查詢」,那麼答案是否定的。

由於多種原因,True Object Stores不支持SQL查詢。在對象

  1. 數據被封裝,所以選擇從對象的內部數據字段成爲用於曝光繁瑣並受到包封規則(公共的,私人的,受保護的,封裝保護)。

  2. 對象存儲中的數據是連接的,因爲它們的引用也是完整存儲的。因此,「選擇」一個對象會爲您提供它直接和間接引用的整個對象網絡。

  3. 對象關係查詢語言更類似於可以轉換爲SQL查詢的類對象語法。這意味着對象關係查詢語言不是對象存儲的SQL模擬。對象存儲直接支持用於查詢的不同語言,並且與提供SQL查詢相比,使用對象查詢語言對提取數據的用處不大。

不幸的是,我不知道Object Stores的標準查詢語言。也許有一個,但是對象店的使用不夠頻繁,如果它是「一堆'標準'爭取成爲一個真正的標準」,我不會感到驚訝。即使使用SQL,標準也相當鬆散地定義,更像「一堆共享基本語法結構的方言」。

0

我發現了一些可能與Caro2提出的問題有關的問題,不幸的是與對象數據庫無關,而是使用名爲Neo4J的圖形數據庫。

該特定圖形數據庫有一個JDBC driver,它通過JDBC接口接受Cypher查詢(Neo4J圖形查詢語言之一)。它可以讓你查詢圖形數據庫,而不是使用SQL,而是使用自己的查詢語言。它支持JDBC API,如executeQuery和executeUpdate方法,並允許您導航ResultSet等。

所以這意味着面向對象的數據庫有可能擁有JDBC驅動程序,只要開發人員可以將面向對象的查詢語言與JDBC API相匹配即可。然後可以使用JDBC直接查詢OODB,並使用其JDBC驅動程序將查詢/更新/刪除命令置於OO查詢語言語法中。