关系对象数据库中的映射

时间:2013-10-22 17:38:22

标签: java database jdbc object-relational-model

我有一个关于在Java中使用对象关系数据库的理论问题。我知道有一些类似ORM(例如:Hibernate)的东西,它为类提供映射数据库表,但我也可以通过JDBC进行操作(通过Java创建连接和执行sql查询)。有没有办法使用第二种方法(普通的JDBC机制)在对象数据库中进行查询? 感谢您提供任何帮助,也许还有一些样品;)

4 个答案:

答案 0 :(得分:1)

ORM是SQL之上的包装器。他们不是火箭科学。如果您不喜欢对象查询语言(例如HQL),那么您可以进行简单的SQL查询(确保在Hibernate中使用方法createSQLQuery(...)

编辑:

根据里卡多的评论,如果你在对象数据库AFAIK上寻找SQL,我认为目前没有任何支持。

答案 1 :(得分:0)

我认为您不能使用JDBC访问纯面向对象的数据库。不是没有将SQL转换为对象查询语言的驱动程序(即,与ORM框架的作用相反)。

答案 2 :(得分:0)

有真正的面向对象数据库,称为对象存储。将它们视为通常驻留在内存中的类的持久存储。如果你的意思是“有没有办法在对象数据库中使用第二种方法进行查询”,那么答案就是否定。

True Object Stores由于多种原因无法支持SQL查询。

  1. 对象中的数据被封装,因此选择关闭对象的内部数据字段会变得很麻烦,并且受制于暴露的封装规则(公共,私有,受保护,受包保护)。

  2. 对象商店中的数据是连接的,因为它们的引用也是完整存储的。因此,“选择”一个对象可以为您提供直接和间接引用的整个对象网。

  3. 对象关系查询语言更类似于可以转换为SQL查询的类似对象的语法。这意味着Object关系查询语言不是Object Stores的SQL模拟。对象存储直接支持不同的查询语言,并且使用对象查询语言在提取数据方面不会比使用SQL查询更有用。

  4. 不幸的是,我不知道Object Stores的标准查询语言。也许有一个,但对象商店很少使用,如果它是“一堆'标准'争取成为一个真正的标准”,我不会感到惊讶。即使使用SQL,该标准也非常松散地定义,更像是“一堆共享基本语法结构的方言”。

答案 3 :(得分:0)

我发现了一些可能与Caro2提出的问题有关的事情,不幸的是不是关于对象数据库,而是使用名为Neo4J的图形数据库。

该特定图数据库有一个JDBC driver,它通过JDBC接口接受Cypher查询(Neo4J图形查询语言之一)。它允许您查询图形数据库,而不是SQL,但使用自己的查询语言。它支持JDBC API,例如executeQuery和executeUpdate方法,并允许您导航ResultSets等。

因此,这意味着面向对象数据库可以拥有JDBC驱动程序,只要开发人员可以将面向对象的查询语言与JDBC API相匹配即可。然后,可以使用JDBC直接查询OODB,使用其JDBC驱动程序将查询/更新/删除命令放在OO查询语言语法中。