2017-01-07 2 views
0

Документация говорит нам, чтобы загрузить драйвер JDBC, как такДерби EmbeddedDriver работает без Class.forName

Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); 

https://db.apache.org/derby/papers/DerbyTut/embedded_intro.html

Но она отлично работает без и получить соединение сразу

connection = DriverManager.getConnection("jdbc:derby:" + pathDerby + ";create=true"); 

Почему это?

Версия из журнала: Загрузка Derby версии Апач Software Foundation - Apache Derby - 10.13.1.1 - (1765088)

EDIT:

На самом деле это необходимо, если вы выключаете двигатель Derby и хотят, чтобы открыть его снова в том же процессе JWM (я делаю это все время в моих тестах интеграции)

После закрыли

DriverManager.getConnection("jdbc:derby:;shutdown=true"); 

Вы должны возобновлять как этот

Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); 
connection = DriverManager.getConnection("jdbc:derby:" + pathDerby + ";create=true"); 
+0

Вы можете поднять некоторые задания в трекер-хранилище Derby для удаления/пересмотра устаревшей документации. –

ответ

2

От official documentation:

методы DriverManager GetConnection и getDrivers были расширены для поддержки механизма Provider Java Standard Edition Service. Драйверы JDBC 4.0 должны включать файл META-INF/services/java.sql.Driver. Этот файл содержит имя драйвера JDBC для java.sql.Driver. Например, чтобы загрузить класс my.sql.Driver, то META-INF/услуги/java.sql.Driver файл будет содержать запись:

my.sql.Driver

Приложения больше не нужно явно загружать драйверы JDBC, используя Class.forName(). Существующие программы, которые в настоящее время загружают драйверы JDBC с использованием Class.forName(), будут продолжать работать без изменений.

+0

@Stig: на мой взгляд это «выключение соединения» является злоупотреблением интерфейсом 'getConnection()'. Почему я должен установить соединение с _shutdown_ в базе данных. DriverManager никогда не собирался управлять жизненным циклом базы данных (сервер) –

+1

согласен, но именно так Derby реализуется. :) – Stig

Смежные вопросы