Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / разница м-у Class.forName(Any Class) и new Any Class / 12 сообщений из 12, страница 1 из 1
09.02.2007, 16:23:47
    #34319964
fjord
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница м-у Class.forName(Any Class) и new Any Class
Изучаю JDBC и там во всех примерах первая операция это загрузка драйвера
Код: plaintext
 Class .forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
и я вот подумал, а почему не
Код: plaintext
DriverManager.registerDriver( new  com.microsoft.sqlserver.jdbc.SQLServerDriver());
работают оба подхода :)
может вопрос глупый и будет раздражать супер спецов (заранее извиняюсь), но вот все таки интересно, какая разница в этих подходах?
...
Рейтинг: 0 / 0
09.02.2007, 16:29:49
    #34319995
Зашедший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница м-у Class.forName(Any Class) и new Any Class
Работают оба, но разница огромна:
в первом случае производится рантайм-загрузка класса в виртуальную машину, во втором - прямое создание инстанса драйвера при заранее известном классе. То есть в случае второго подхода теряется возможность использовать другие драйвера (например, беря их из properties-файла).
...
Рейтинг: 0 / 0
09.02.2007, 16:35:52
    #34320017
fjord
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница м-у Class.forName(Any Class) и new Any Class
2 Зашедший
А если заранее знаю что буду использовать один драйвер, то будет выйгрыш, например в скорости или производительности, использования первого метода, то есть создания инстанса?
...
Рейтинг: 0 / 0
09.02.2007, 16:37:16
    #34320025
fjord
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница м-у Class.forName(Any Class) и new Any Class
Всмысле второго метода
Код: plaintext
DriverManager.registerDriver( new  com.microsoft.sqlserver.jdbc.SQLServerDriver());
...
Рейтинг: 0 / 0
09.02.2007, 16:41:38
    #34320037
Зашедший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница м-у Class.forName(Any Class) и new Any Class
Суммарно разница должна быть невелика, а вот гибкость теряется. Хотя для мелких тестовых утилиток на этапе отладки второй подход бывает удобнее...
...
Рейтинг: 0 / 0
09.02.2007, 16:43:25
    #34320040
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разница м-у Class.forName(Any Class) и new Any Class
fjord2 Зашедший
А если заранее знаю что буду использовать один драйвер, то будет выйгрыш, например в скорости или производительности, использования первого метода, то есть создания инстанса?

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

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

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

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

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

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

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


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