对于我们正在开始的新项目(在Hibernate 3之上使用JPA 2),我们需要能够存储XML文档,然后在日后查询其内容和结构。我们想要支持的数据库是DB2,Oracle和SQLServer。
我知道所有三个数据库供应商都支持本机XML查询(使用SQL和类似XQuery的语句),但Hibernate是否有直接的支持?换句话说,我可以编写一组hibernate数据访问代码,使用Hibernate / JPA的内置功能查询所有3种数据库类型,还是需要为每种数据库类型编写特定的查询?
我很欣赏我可以将列定义为@Lob列,然后读取所有记录,解析和检查,但我希望利用数据库引擎的强大功能而不必自己动手。
作为参考,我们一次只会使用一种DB风格,只是我们希望能够在需要时支持所有3种风格。
谢谢Steve
答案 0 :(得分:2)
JPA不为Lob
以外的这些专有类型提供特定支持。对于更高级的支持,我想你必须实现一些Hibernate自定义用户类型。以下文档可能会给您一些想法。
当然,它们将是特定于数据库的,并且会降低代码的可移植性。
关于查询,AFAIK在HQL语句的WHERE
子句中调用并且Hibernate不知道的任何函数都按原样传递给数据库。所以你可以利用特定的功能。但同样,这将使查询数据库具体化。也许可以考虑使用orm.xml
映射进行特定部署。