2012-06-18 44 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),也可以使用此驅動程序。尤其是,您可以完全控制使用哪個驅動程序。