通过ODBC连接使用Hibernate

gc0ot86w  于 2023-02-19  发布在  其他
关注(0)|答案(1)|浏览(151)

我需要在ODBC连接上使用Hibernate(不是我的决定),我想知道这样做的注意事项(如果可能的话?)。我做了一些研究,有点困惑,希望有人能澄清一些问题。看起来我需要使用JDBC-ODBC桥?
Wiki - JDBC/ODBC桥
1.这个页面上有不同的JDBC“类型”(1-4)。据我所知,驱动程序的具体实现细节随类型版本的增加而增加?例如,类型1的ODBC驱动程序不能支持类型4驱动程序可以支持的相同功能?看起来ODBC驱动程序不能超过1,而JDBC驱动程序(可以)可以达到4?
1.如果目标数据库有自己的ODBC驱动程序,需要什么级别的支持才能工作?我是否应该查看文档,看看是否存在级别1、级别N等调用?
1.与上面的问题类似,我如何确保LOB字段将工作/中断?是否需要在ODBC驱动程序中实现某个级别或某些SQL函数?
不幸的是我在理解Hibernate需要什么方面有点脱节,因为我找不到关于它需要什么的文档。解释和/或文档会很好。

6ljaweal

6ljaweal1#

**1)**ODBC不像Java那样有“驱动程序类型”。主要的区别(也是为什么Java有驱动程序类型)是一些驱动程序需要本地扩展,而这些扩展在不同的操作系统/架构之间是不可移植的。

例如,JDBC驱动程序类型1,具有纯本地绑定。因此,如果您有一些使用此驱动程序在Windows上运行的程序,您无法将应用程序部署到Linux,因为存在二进制不兼容性。
JDBC驱动程序类型4则在天平的另一边,它完全是用java编写的,因此它可以在任何可以运行JVM的平台上运行,而不需要翻译调用的服务(类型3驱动程序就是这种情况)。
所以类型1是纯原生的,类型4是纯java的,中间有不同的阴影。

**2)**您需要检查DB供应商驱动程序。您能说出您正在使用的DB吗?
**3)**LOB字段“应该”工作,但它也取决于驱动程序,它可能有一些奇怪的限制,如“驱动程序无法处理大于4k的LOB字段”。

我的建议是质疑使用ODBC的决定,原因如下:

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

相关问题