我有一個關於在例如Java中使用對象關係數據庫的理論問題。我知道有像ORM(例如:Hibernate)這樣的東西提供映射數據庫表到類,但我也可以通過JDBC(通過Java創建連接和執行SQL查詢)進行操作。有沒有辦法使用第二種方法(普通JDBC機制)在對象數據庫中執行查詢? 感謝您的幫助,也許是一些樣品;)關係對象數據庫映射
回答
ORM是在SQL
之上的包裝。他們不是火箭科學。如果你不喜歡對象查詢Languagues(如HQL
),是的,你可以(使用方法createSQLQuery(...)肯定在Hibernate
)做純SQL
查詢
編輯:
基於裏卡多評論,如果你正在尋找關於對象數據庫的SQL,AFAIK,我認爲目前沒有任何支持。
我不認爲你可以使用JDBC訪問純粹的面向對象數據庫。並非沒有將SQL轉換爲對象查詢語言的驅動程序(即,與ORM框架所做的相反)。
有真正的面向對象的數據庫,稱爲對象存儲。將它們看作是通常駐留在內存中的類的持久存儲。如果這就是你所說的「有什麼辦法使用第二種方法在對象數據庫中進行查詢」,那麼答案是否定的。
由於多種原因,True Object Stores不支持SQL查詢。在對象
數據被封裝,所以選擇從對象的內部數據字段成爲用於曝光繁瑣並受到包封規則(公共的,私人的,受保護的,封裝保護)。
對象存儲中的數據是連接的,因爲它們的引用也是完整存儲的。因此,「選擇」一個對象會爲您提供它直接和間接引用的整個對象網絡。
對象關係查詢語言更類似於可以轉換爲SQL查詢的類對象語法。這意味着對象關係查詢語言不是對象存儲的SQL模擬。對象存儲直接支持用於查詢的不同語言,並且與提供SQL查詢相比,使用對象查詢語言對提取數據的用處不大。
不幸的是,我不知道Object Stores的標準查詢語言。也許有一個,但是對象店的使用不夠頻繁,如果它是「一堆'標準'爭取成爲一個真正的標準」,我不會感到驚訝。即使使用SQL,標準也相當鬆散地定義,更像「一堆共享基本語法結構的方言」。
我發現了一些可能與Caro2提出的問題有關的問題,不幸的是與對象數據庫無關,而是使用名爲Neo4J的圖形數據庫。
該特定圖形數據庫有一個JDBC driver,它通過JDBC接口接受Cypher查詢(Neo4J圖形查詢語言之一)。它可以讓你查詢圖形數據庫,而不是使用SQL,而是使用自己的查詢語言。它支持JDBC API,如executeQuery和executeUpdate方法,並允許您導航ResultSet等。
所以這意味着面向對象的數據庫有可能擁有JDBC驅動程序,只要開發人員可以將面向對象的查詢語言與JDBC API相匹配即可。然後可以使用JDBC直接查詢OODB,並使用其JDBC驅動程序將查詢/更新/刪除命令置於OO查詢語言語法中。
- 1. 對象關係映射vs數據庫抽象層
- 2. 數據庫/對象映射
- 3. 對象/關係映射
- 4. 對象關係映射
- 5. 關係對象映射c#
- 6. 關係數據庫映射問題
- 7. MVC與EF關係數據庫映射
- 8. 從關係數據庫映射
- 9. 對象數據庫關係數據庫
- 10. 將java對象映射到數據庫
- 11. 數據庫映射到對象
- 12. PHP對象關係映射框架
- 13. 對象關係映射的缺點
- 14. 動態對象關係映射
- 15. 對象關係映射設計模式
- 16. Grails中的對象關係映射
- 17. 爲SQLAlchemy多對多數據庫設置關係/映射
- 18. 關係數據庫設計(正火許多一對多映射)
- 19. 針對單向1:n關係的Grails GORM數據庫映射
- 20. 休眠一對多沒有數據庫關係映射
- 21. iOS - 核心數據關係。映射表/多對多關係
- 22. 手動映射JSON對象時RestKit關係不映射
- 23. 關於使用休眠映射對象到數據庫
- 24. 面向對象的數據庫對象關係數據庫
- 25. 映射一對多關係
- 26. 功能比關係映射更容易比關係對象嗎?
- 27. 數據映射器依賴關係
- 28. JavaScript庫來映射對象?
- 29. Grails - 多對象數據庫關係
- 30. 數據庫對象關係可視化
我認爲Caro2意味着如果有可能使用JDBC查詢OBJECT數據庫,而不是可以使用JDBC查詢RELATIONAL數據庫。 – Ricardo
當然,我想到了這種方法。對於任何不確定情況我都很抱歉... – caro2