2011-09-02 223 views
1

我需要使用Hibernate,通过ODBC连接(不是我的决定),并想知道这样做的注意事项使用Hibernate(如果它甚至有可能?)。我做了一些研究,并且有些困惑,希望有人能澄清一些观点。好像我需要使用JDBC-ODBC桥接器?通过ODBC连接

Wiki - JDBC/ODBC Bridge

  1. 在该页面中填充有不同的JDBC “类型”(1-4)。从我所能理解的情况来看,驱动程序的具体实现细节随着类型版本而增加?即。类型1 ODBC驱动程序不能支持类型4驱动程序可以使用的相同功能?看起来像一个ODBC驱动程序不能超过1,而JDBC驱动程序(可以)达到4?

  2. 如果目标数据库中有自己的ODBC驱动程序,需要什么级别的支持工作?我是否应该查看文档以查看是否存在级别1,级别N等等?

  3. 对上述问题相似,我怎么能确保LOB字段都去上班/打破?是否需要在ODBC驱动程序中实现级别或某些SQL函数?

不幸的是,我在理解hibernate所需要的东西方面存在一些断层,因为我没有找到它所需要的文档。一个解释和/或文件将是伟大的。

回答

2

1) ODBC没有像java那样的'驱动程序类型'。主要的区别(为什么Java有驱动程序类型)是一些司机要求其不能跨不同操作系统/架构便携机扩展。

例如,JDBC驱动程序类型1具有纯原生绑定。所以,如果你有使用这个驱动程序在Windows上运行的东西,你不能把你的应用程序和部署到Linux,因为有二进制不兼容。

JDBC驱动程序类型4是在天平的另一端,它的纯Java编写的,因此它可以可以运行在JVM的任何平台上运行,而不需要的是翻译电话服务(这是类型3司机的情况)。

所以1型是纯天然的,类型4是纯java,在中间不同的色调。

2)您需要检查数据库供应商的驱动程序。你能说出你正在使用哪个数据库吗?

3) LOB字段“应该”工作,但它也取决于驱动程序,它可能有一些奇怪的限制,例如“驱动程序无法处理大于4k的Lob字段”。

我的设备专业的建议是,你冲谁决定这对由于以下原因坚果的人:

  • 从Oracle网站摘自:的JDBC-ODBC桥驱动程序,建议在原型使用努力并没有其他技术为基础的JDBC驱动程序存在
  • 维基百科情况:相比其他驱动程序类型很慢
  • ,你会发现在其他数据库厂商W¯¯类似的评论因为JDBC驱动程序在过去的12(或更多)年已经发展了A LOT
  • 你编写Java,不VB.Net

并请,不要害怕展示这个人,他/她是错的(当然,在一个不错的方式)的。

+0

澄清一点:当您提到“您需要检查数据库供应商驱动程序”时。你是说要检查JDBC驱动程序还是JDBC-ODBC驱动程序?如果JDBC驱动程序支持它,假设事情可以正常工作,尽管通过ODBC桥缓慢而低效地安全吗? – Ryan

+0

Ups,那部分根本不清楚。我的意思是说一些数据库供应商提供了优化的Java-ODBC驱动程序。如果你的供应商没有提供,你可以使用Java的[generic driver](http://download.oracle.com/javase/6/docs/technotes/guides/jdbc/bridge.html)。关于如果一切都能正常工作,我想是的(这是一个假设),你可能会发现很多Hibernate的问题,因为没有ODBC或泛型SQL [方言](http://docs.jboss.org/hibernate/core/3.5 /javadoc/org/hibernate/dialect/package-summary.html),所以你需要使用另一种方言(Mysql?),并希望它可以工作 – Augusto

+0

接受的答案:如果你不介意的话,还有一个RFC(larification)。我认为使用的驱动程序独立于方言选择?该驱动程序的细节或多或少地将API设置为*能*发送SQL语句? – Ryan