2012-06-18 36 views
4

好吧,标题几乎说明了一切。强制Java 7只使用JDBC 3.0,而不使用JDBC 4.0

有没有办法强制Java 7使用JDBC 3.0而不是JDBC 4.0?

我希望答案是否定的,但我希望...好吧,它更像是一个冰雹玛丽。

为什么你问我想做这样的事情?

我们的数据库是DB2。我们使用Hibernate。在移动到Java 7的过程中(最后),我们打这个错误:

https://forum.hibernate.org/viewtopic.php?f=1&t=997798

而且,有旁边的最后响应最后一行所指出的,解决方法是在JDBC3.0驱动程序( db2jcc),而不是在jdbc4.0驱动程序(db2jcc4)中。

谢谢。 Clark。

+1

如何将JDBC添加到类路径中?我相信你可以改变这一点。 –

+0

Java7和JDBC如何关联?如果我没有弄错,JDBC是JEE API的权利? – kosa

+0

Java 7包含JDBC 4.1。看起来它* only *包含JDBC 4.1,因为使用JDBC 3.0驱动程序会导致围绕未实现的接口方法的编译器错误。 –

回答

2

如果将jdbc3驱动程序放入类路径而不是jdbc4驱动程序中,并且确保在代码中避免调用自JDBC4以来存在的方法,则所有内容都应该完美无缺地工作。

许多数据库还不支持JDBC4,并且可用于Java 7,前提是您只调用驱动程序支持的方法。

+0

当我开始这个港口时,这就是我的想法。 JDBC 4.1为旧接口添加了一些新的方法。我一直非常喜欢java的其中一件事情是,这种变化不是向后兼容的。没有更新的驱动程序,编译阶段失败。 –

+0

为什么编译阶段会失败?你的代码不依赖于驱动程序。它依赖于JDBC API。 –

+0

@ClarkWright:在编译步骤中,为什么你的驱动程序在类路径中?他们不应该!如果您确实只使用JDBC 3 API调用,那么使用新JDK中的旧驱动程序工作得非常好!不要与你的驱动程序一起编译,它们是*纯运行时依赖*! –

0

将jdbc3驱动程序放入一个文件夹并写入一个仅从该文件夹加载的类加载器。使用该类加载器来加载驱动程序。然后,即使您的主机环境安装了其他驱动程序(即jdbc4),也可以使用此驱动程序。尤其是,您可以完全控制使用哪个驱动程序。