powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Загрузка драйвера JDBC. Нет полной ясности.
25 сообщений из 41, страница 1 из 2
Загрузка драйвера JDBC. Нет полной ясности.
    #40091754
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Нет полной ясности про загрузку DriverManager для доступа к БД
в букваре сказано:
"С помощью вызова Class.forName. Рекомендуется именно этот способ. Следующий код загружает com.mysql.jdbc.Driver:
Class.forName("com.mysql.jdbc.Driver"); Только после этого драйвер появляется в списке зарегистрированных драйверов в классе DriverManager и становится возможным открывать соединения". типа один раз это сделать потом не надо

это все понятно, все работает в консоли

Вопрос: в реальном ентапразе (информсистемапредприятия на глассфиш) когда должна происходить регистрация драйвера
- всякий раз когда идет обращение к БД, типа вызов класса

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class ConnectToMySQL {
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException ex) {
            //System.err.println("Unable to load MySQL Driver");
        }
    }
}



что будет если все время дергать DriverManager?

- при загрузке(перезагрузке) "информсистемапредприятия" типа раз в месяц, прописав регистрацию где то в инициализации?
- что то еще?

Заранее спасибо за ответы по ЗАДАННЫМ вопросам
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091769
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Погуглить - совсем не судьба ?
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091772
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

В init сервлета делаешь Class.forName
Потом на post
getConnection
И в конце сервлета все закрыл.
Всё.
Потом уже есть вариант оформления коннекта в админке напр GlassFish
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091774
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что будет если все время дергать DriverManager?

а где в приведенном Вами коде дерганье DriverManager'а?

IMHO (даже не rtfm т.к. не знаю, не разбирался)

скорее всего ничего не будет
дернется Class (максимум класс-лоудер), он посмотрит, что такой класс уже есть, вернет управление и ничего делать не будет
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091778
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
В init сервлета делаешь Class.forName
"Да за это убивать надо!" (ц) бородатый анекдот.

P.S.
Проблемы не только с погуглить, но и со сходить по ссылке?
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091781
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Не преувеличивай. Мой проект 5 лет работал на голом jdbc))
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091815
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Basil A. Sidorov,
Не преувеличивай. Мой проект 5 лет работал на голом jdbc))


Зачем для сервлета вручную подгружать драйвера?
Когда есть JNDI и пул соединений. :-)
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091816
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Basil A. Sidorov,
Не преувеличивай. Мой проект 5 лет работал на голом jdbc))

А он говорит не про голый jdbc. А про то как работает getConnection.
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091834
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Вы странные люди.
Автор спросил не про JNDI.
Я ему дал ОБА варианта. С ним и без него КАК ПРОСИЛИ.
)))) LOL
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091835
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Код не дам на тарелочке. Фигушки. Пока автор не поработает.
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091841
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петя ты конешно извини. Но мне кажется что твой акк захватили боты.

Ты вообще-вообще не читаешь то что постят другие мемберы. Вторым постом Василий дал точный
ответ по теме. А ты - свернул в какие-то сервлеты... init... Это же вообще не про это!
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091845
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Ответь на это без SO. Не надо про других. Сам ответь.

авторВопрос: в реальном ентапразе (информсистемапредприятия на глассфиш) когда должна происходить регистрация драйвера
- всякий раз когда идет обращение к БД, типа вызов класса

public class ConnectToMySQL {
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException ex) {
//System.err.println("Unable to load MySQL Driver");
}
}
}
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091847
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
А) идет ли обращение к бд
Б) если это нивелировать то куда помещать код. Как?
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091848
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

В Glassfish (и других app серверах) соединение с СУБД настраивается на самом сервере и нужные для этого драйвера там же указываются. Про JDNI почитайте.
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091851
Pcrepair , все что делает Class.forName() - это возвращает инстанс Class по его имени. Для этого идет обращение к ClassLoader. А тот загрузит класс (считает его с диска и распарсит) если он еще не был загружен. Ну и просто вернет уже загруженный инстанс если тот уже существовал. В общем дергать этот метод можно сколько угодно, настоящая загрузка произойдет лишь 1 раз.

Но если мы пишем с толком и расстановкой, то мы не будем постоянно делать Class.forName(). Вместо этого мы поместим этот код куда-то в код инициализации приложения (не сервлета). В Servlet API это можно сделать в слушателе ServletContextListener.contextInitialized() .

Но это все равно не то что мы будем делать в настоящем приложении:
1. Если это Spring, то мы объявим DB Pool в его контексте. В зависимости от того как был подключен спринг - он либо загрузится при загрузке первого (и обычно единственного) DispatcherServlet'a, либо в Servlet слушателе.
2. В случае Embedded App Server - мы сами его запускаем, ну инициализировать все можем когда сами захотим.
3. Ну и самый enterprise вариант - это заставить сам App Server заниматься управлением соединений. И запрашивать у app server'a эти соединения через JNDI . Плюс этого подхода - настройки соединения можно менять через админку самого app server'a. Минус - доп технология для изучения (если с JNDI никогда не сталкивался), ну и сложность (хоть и небольшая) при написании тестов - нужно подключать фейковый JNDI или переопределять datasource бин для тестирования.

Ну и имей в виду:
1. Получение соединения из DriverManager - это устаревший подход. Сейчас это делают через DataSource.
1. Мы никогда не работаем с DriverManager или нативным DataSource от драйвера напрямую. Мы используем DB Pool для этого, а он уже обращается к драйверу.
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091852
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Ответь на это без SO
Загрузка JDBC-драйверов через Class.forName() устарела с появлением JDBC 4.0 в Java 6 .
Java 6+ автоматически загружает JDBC-драйверы из класс-путя. И за полтора десятка прошедших лет об этом уже можно было бы как-то узнать. Хоть с помощью SO, хоть путём чтения документации и примеров.

P.S.
Да, есть (были?) проблемы у этого механизма, но решаются они тривиальным чтением документации на какой-нибудь servlet-контейнер.
Лично я читал доку котяры. Лет этак восемь назад.
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091855
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Я понимаю что устарело и счас модно микросервисы.
Сам я перешел на JNDI в GlassFish
Но вопрос в том что легаси перестало работать? Без JNDI?
Или просто депрекатед? Или?
Тема вообще звучит "нет полной ясности".
А не так чтоб работало.
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091865
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Ты не прав.
Без JNDI нет удобного кода без проверки загрузки драйвера как я сказал.
С jndi с тобой никто не спорит.
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091867
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Basil A. Sidorov,
Ты не прав.
Без JNDI нет удобного кода без проверки загрузки драйвера как я сказал.
С jndi с тобой никто не спорит.

тут я уже перестал понимать

буквосочитание "нет удобного кода без проверки загрузки драйвера" мне не понятно. Возможно по дороге произошли проблемы с кодовой страницей )))
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091868
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
Смотри.
Class.forName....
Или
DriverManager.registerDriver...
Необходимо и удобно вызывать в методе без JNDI.
Так?. Что я и делаю при вызове оракла.
Так?
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091871
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
А) обязательный вызов
Б) удобство - контроль ошибок по наличию дров
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091874
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
...Необходимо...

???

Если я правильно понял ссылку, где английским черными буквами по белому LCD экрану, то - нет. Такой необходимости уже нет.

Но лично я - просто не помню. Просто беру пример из соединения из доки к JDBC драйверу и его копирую. Есть там Class.forName, нет там Class.forName - лично мне фиолетово, даже и не помню.
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091877
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Basil A. Sidorov,
Я понимаю что устарело и счас модно микросервисы.
Сам я перешел на JNDI в GlassFish
Но вопрос в том что легаси перестало работать? Без JNDI?

Мне почему-то было ясно что ты свернешь на легаси. Что там у тебя?
Sybase ? Informix? Lotus Notes? И что ты за 10 лет ниразу не обновил дрова?
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091880
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

Class.forName....
Или
DriverManager.registerDriver...

Это всё ненужно. Только смотри внимательно как ты включаешь артифакты в проект.

Есть некоторые перцы которые jdbc-driver плагинами пересобирают в толстый jar...
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091885
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Выше сказал - переделал на JNDI.
Дак нафиг код трогать если со строкой
RegisterDriver(new oracle.xxxxx
Тоже работает.
Что с ней что без нее)))
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Загрузка драйвера JDBC. Нет полной ясности.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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