2012-06-18 3 views
4

글쎄, 제목은 거의 모든 것을 말합니다.강제로 Java 7은 JDBC 3.0이 아닌 JDBC 3.0 만 사용합니다.

Java 7이 JDBC 3.0을 사용하고 JDBC 4.0을 사용하지 않도록 강제 할 수 있습니까?

나는 대답이 아니오라고 기대하지만, 나는 희망하고있다. .. ok, 그것은 더 우박의 메리이다.

왜 그런 질문을하고 싶습니다.

데이터베이스는 DB2입니다. 우리는 최대 절전 모드를 사용한다. (마지막 응답의 마지막 줄에 다음이 지적, 수정이 jdbc3.0 드라이버에있다,

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

그리고 : 자바 7로 이동하는 과정에서 (마지막으로) 우리는이 버그를 명중 db2jcc)이며 jdbc4.0 드라이버 (db2jcc4)에는 없습니다.

감사합니다. 클락

+1

JDBC를 클래스 경로에 어떻게 추가합니까? 나는 당신이 그것을 바꿀 수 있다고 확신합니다. –

+0

Java7과 JDBC가 어떻게 관련되어 있습니까? 내가 잘못 본 것이 아니라면 JDBC는 JEE API 맞습니까? – kosa

+0

자바 7에는 JDBC 4.1이 포함되어 있습니다. JDBC 3.0 드라이버를 사용하면 구현되지 않은 인터페이스 메소드에서 컴파일러 오류가 발생하기 때문에 * JDBC * 만 포함됩니다. –

답변

2

jdbc4 드라이버 대신 클래스 경로에 jdbc3 드라이버를 넣고 코드에서 JDBC4 이후에 존재하는 메소드를 호출하지 않으려면 모든 것이 완벽하게 작동해야합니다.

많은 데이터베이스가 JDBC4를 아직 지원하지 않으며 Java 7에서 사용할 수 있습니다. 단, 드라이버에서 지원하는 메소드 만 호출하면됩니다.

+0

내가이 항구를 시작했을 때, 그것은 내가 생각했던 것이다. JDBC 4.1은 이전 인터페이스에 몇 가지 새로운 메소드를 추가합니다. 내가 항상 자바에 대해 좋아했던 것들 중 하나는 그러한 변화가 역 호환성이 없다는 것입니다. 업데이트 된 드라이버가 없으면 컴파일 단계가 실패합니다. –

+0

왜 컴파일 단계가 실패합니까? 코드는 드라이버에 의존하지 않습니다. JDBC API에 의존합니다. –

+0

@ClarkWright : 컴파일 과정에서 클래스 패스에 드라이버가있는 이유는 무엇입니까? 그들은해서는 안된다! 그리고 실제로 JDBC 3 API 호출 만 사용한다면 새로운 JDK에서 오래된 드라이버로 작업하면 완벽하게 작동합니다! 드라이버로 컴파일하지 마십시오. * 순수한 런타임 종속성입니다! –

0

jdbc3 드라이버를 폴더에 넣고 해당 폴더에서만로드하는 클래스 로더를 작성하십시오. 해당 클래스 로더를 사용하여 드라이버를로드하십시오. 그런 다음 호스트 환경에 다른 드라이버 (예 : jdbc4)가 설치된 경우에도이 드라이버를 사용할 수 있습니다. 특히 어떤 드라이버가 사용되는지 완전히 제어 할 수 있습니다.