powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / разница м-у Class.forName(Any Class) и new Any Class
12 сообщений из 12, страница 1 из 1
разница м-у Class.forName(Any Class) и new Any Class
    #34319964
fjord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изучаю JDBC и там во всех примерах первая операция это загрузка драйвера
Код: plaintext
 Class .forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
и я вот подумал, а почему не
Код: plaintext
DriverManager.registerDriver( new  com.microsoft.sqlserver.jdbc.SQLServerDriver());
работают оба подхода :)
может вопрос глупый и будет раздражать супер спецов (заранее извиняюсь), но вот все таки интересно, какая разница в этих подходах?
...
Рейтинг: 0 / 0
разница м-у Class.forName(Any Class) и new Any Class
    #34319995
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работают оба, но разница огромна:
в первом случае производится рантайм-загрузка класса в виртуальную машину, во втором - прямое создание инстанса драйвера при заранее известном классе. То есть в случае второго подхода теряется возможность использовать другие драйвера (например, беря их из properties-файла).
...
Рейтинг: 0 / 0
разница м-у Class.forName(Any Class) и new Any Class
    #34320017
fjord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Зашедший
А если заранее знаю что буду использовать один драйвер, то будет выйгрыш, например в скорости или производительности, использования первого метода, то есть создания инстанса?
...
Рейтинг: 0 / 0
разница м-у Class.forName(Any Class) и new Any Class
    #34320025
fjord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всмысле второго метода
Код: plaintext
DriverManager.registerDriver( new  com.microsoft.sqlserver.jdbc.SQLServerDriver());
...
Рейтинг: 0 / 0
разница м-у Class.forName(Any Class) и new Any Class
    #34320037
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суммарно разница должна быть невелика, а вот гибкость теряется. Хотя для мелких тестовых утилиток на этапе отладки второй подход бывает удобнее...
...
Рейтинг: 0 / 0
разница м-у Class.forName(Any Class) и new Any Class
    #34320040
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fjord2 Зашедший
А если заранее знаю что буду использовать один драйвер, то будет выйгрыш, например в скорости или производительности, использования первого метода, то есть создания инстанса?

Прежде чем задать такой вопрос ты хорошо подумай как часто у тебя этот код выполняется. Даже если разница была бы 10 секунд или 1 секунда. Разве твоему приложению не все равно? Ведь этот код является частью инициализации.
...
Рейтинг: 0 / 0
разница м-у Class.forName(Any Class) и new Any Class
    #34320046
fjord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПрежде чем задать такой вопрос ты хорошо подумай как часто у тебя этот код выполняется. Даже если разница была бы 10 секунд или 1 секунда. Разве твоему приложению не все равно? Ведь этот код является частью инициализации.просто стало любопытно :))
...
Рейтинг: 0 / 0
разница м-у Class.forName(Any Class) и new Any Class
    #34320175
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fjordпросто стало любопытно :))
Ещё стоит задуматься над тем что "производительность" не единственный показатель качества кода. И очень часто не самый важный.
...
Рейтинг: 0 / 0
разница м-у Class.forName(Any Class) и new Any Class
    #34320225
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fjordВсмысле второго метода
Код: plaintext
DriverManager.registerDriver( new  com.microsoft.sqlserver.jdbc.SQLServerDriver());

- этот способ позволяет в процессе выполнения программы поменять используемый драйвер.
...
Рейтинг: 0 / 0
разница м-у Class.forName(Any Class) и new Any Class
    #34320236
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov fjordВсмысле второго метода
Код: plaintext
DriverManager.registerDriver( new  com.microsoft.sqlserver.jdbc.SQLServerDriver());

- этот способ позволяет в процессе выполнения программы поменять используемый драйвер.
Поменять можно и в первом случае. Reflection API...
...
Рейтинг: 0 / 0
разница м-у Class.forName(Any Class) и new Any Class
    #34320541
The_ShadoW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напишите тест-кейс в виде 10000000 загрузок драйвера, и наглядно выясните, что быстрее работает =)

Потом подумайте, понадобится ли Вам когда-нибудь в жизни делать хотя бы больше 5 загрузок, и дайте правильный ответ =)
...
Рейтинг: 0 / 0
разница м-у Class.forName(Any Class) и new Any Class
    #34320696
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_ShadoWНапишите тест-кейс в виде 10000000 загрузок драйвера, и наглядно выясните, что быстрее работает =)

Потом подумайте, понадобится ли Вам когда-нибудь в жизни делать хотя бы больше 5 загрузок, и дайте правильный ответ =)

Информация для любителей писать подобные тесты .

Ну и стоит обратить внимание что после первой загрузки класса и регистрации драйвера эти методы будут работать немного по другому.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / разница м-у Class.forName(Any Class) и new Any Class
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]