Какой подход лучше для загрузки драйвера JDBC?

Я думаю, что причина может быть найдена здесь

»приложение принимает допущение, что соединение SQL всегда доступно (без проверки или проверки перед выполнением команд), поэтому, когда строка происходит сбой или что-либо вызывает сброс / закрытие соединения, приложение генерирует это сообщение.

Для воспроизведения просто прервите сеанс SQL на сервере SQL, и вы получите то же самое похожее сообщение. "

[ 114] Исправлено: добавлена ​​проверка, чтобы убедиться, что соединение может быть установлено, и добавлена ​​повторная попытка / задержка + повторная попытка

.

7
задан Michael Myers 1 April 2009 в 18:26
поделиться

5 ответов

Если Вы используете Class.forName (), то Вы не обязаны иметь любые зависимости времени компиляции от конкретного драйвера JDBC. Это особенно полезно, когда Вы - написание кода, которое может работать со множеством баз данных.

Рассмотрите следующий код:

// Register the PostgreSQL driver
Class.forName("org.postgresql.Driver");

Теперь сравните его с:

import org.postgresql.Driver;

// Register the PostgreSQL driver
DriverManager.registerDriver(new Driver());

И полагайте, что в первом примере, имя класса, возможно, также прибыло из файла свойств, XML-файла, и т.д., в зависимости от того, что удобно для Вашего приложения.

3
ответ дан 7 December 2019 в 05:30
поделиться

"производительность и т.д. лучше?"

Я сказал бы, что производительность для этой одноразовой операции является наименьшим количеством Ваших забот.

При использовании Java сервер приложений EE, ответ не "ни один". Необходимо настраивать пул соединения и позволять ему обработать загрузку драйвера и распространение соединения.

1
ответ дан 7 December 2019 в 05:30
поделиться

Руководство по интерфейсу API JDBC и Ссылка являются лучшей ссылкой для таких вопросов, раздел которых обращается к роли, которую играют классы Драйвера и DriverManager.

Все классы Драйвера, как ожидают, будут иметь статический инициализатор, который ответственен за создание экземпляра того Драйвера, и зарегистрируйте его в DriverManager, когда класс Драйвера загружается.

Кроме того, DriverManager.getConnection () является, вероятно, единственным пространством пользователя дружественный метод в классе. Большинство других методов обычно не используется большинством разработчиков, использующих API JDBC. Таким образом, старая пословица все еще стоит - используют Class.forName (), чтобы загрузить драйвер и затем использовать DriverManager.getConnection () для получения соединения с базой данных.

2
ответ дан 7 December 2019 в 05:30
поделиться

При чтении JavaDoc, на который это похоже, Class.forName требовался для начала, и затем вещи, измененные так, чтобы это больше не был предпочтенный путь (или необходимый путь).

1
ответ дан 7 December 2019 в 05:30
поделиться

Я должен сказать, Ваша жизнь будет намного легче при построении экземпляра драйвера, статически ссылаются на драйвер. После того как у Вас есть это, можно проигнорировать DriverManager который сделанный из зла.

1
ответ дан 7 December 2019 в 05:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: