通过ODBC连接使用Hibernate

时间:2011-09-02 20:54:41

标签: java database hibernate jdbc odbc

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

Wiki - JDBC/ODBC Bridge

  1. 此页面填充了不同的JDBC“类型”(1-4)。根据我的理解,驱动程序的实现具体细节随类型版本而增加?即。类型1 ODBC驱动程序不能支持类型4驱动程序可以使用的相同功能吗?看起来ODBC驱动程序不能超过1,而JDBC驱动程序(可以)到4?

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

  3. 与上述问题类似,我如何确保LOB字段可以工作/中断?是否需要在ODBC驱动程序中实现某个级别或某些SQL函数?

  4. 不幸的是,我在理解hibernate所需要的东西方面有点脱节,因为我找不到它需要什么的文档。解释和/或文档会很棒。

1 个答案:

答案 0 :(得分:2)

<强> 1) ODBC没有像java那样的“驱动程序类型”。主要区别(以及Java有驱动程序类型的原因)是某些驱动程序需要本机扩展,这些扩展在不同的操作系统/体系结构中不可移植。

例如,JDBC驱动程序类型1具有纯本机绑定。因此,如果您使用此驱动程序在Windows上运行某些内容,则无法将应用程序部署到Linux,因为存在二进制不兼容性。

JDBC驱动程序类型4位于规模的另一端,它完全用java编写,因此它可以在任何可以运行JVM的平台上运行,而无需转换调用的服务(这是3型司机案例。)

因此Type 1是纯本机,Type 4是纯java,中间有不同的阴影。

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

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

我的专业建议是,由于以下原因,你打击决定坚果的人:

  • 取自oracle网站:建议将JDBC-ODBC Bridge驱动程序用于原型设计工作以及不存在其他基于JDBC技术的驱动程序的情况
  • 来自维基百科的
  • 与其他驱动程序类型相比,它很慢
  • 您会在其他数据库供应商网站上找到类似的评论,因为JDBC驱动程序在过去12年(或更长)时间内已经发展了 A LOT
  • 您正在编写java,而不是VB.Net

请不要害怕向他/她表明他/她是错的(当然是很好的方式)。