我需要在ODBC连接上使用Hibernate(不是我的决定),并且想知道这样做的警告(如果它甚至可能吗?)。我做了一些研究,有点困惑,希望有人能澄清一些观点。好像我需要使用JDBC-ODBC桥?
此页面填充了不同的JDBC“类型”(1-4)。根据我的理解,驱动程序的实现具体细节随类型版本而增加?即。类型1 ODBC驱动程序不能支持类型4驱动程序可以使用的相同功能吗?看起来ODBC驱动程序不能超过1,而JDBC驱动程序(可以)到4?
如果目标数据库有自己的ODBC驱动程序,需要什么级别的支持才能工作?我应该查看文档以查看是否存在级别1,级别N等调用?
与上述问题类似,我如何确保LOB字段可以工作/中断?是否需要在ODBC驱动程序中实现某个级别或某些SQL函数?
不幸的是,我在理解hibernate所需要的东西方面有点脱节,因为我找不到它需要什么的文档。解释和/或文档会很棒。
答案 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字段”。
我的专业建议是,由于以下原因,你打击决定坚果的人:
请不要害怕向他/她表明他/她是错的(当然是很好的方式)。