|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
Добрый день. Нет полной ясности про загрузку DriverManager для доступа к БД в букваре сказано: "С помощью вызова Class.forName. Рекомендуется именно этот способ. Следующий код загружает com.mysql.jdbc.Driver: Class.forName("com.mysql.jdbc.Driver"); Только после этого драйвер появляется в списке зарегистрированных драйверов в классе DriverManager и становится возможным открывать соединения". типа один раз это сделать потом не надо это все понятно, все работает в консоли Вопрос: в реальном ентапразе (информсистемапредприятия на глассфиш) когда должна происходить регистрация драйвера - всякий раз когда идет обращение к БД, типа вызов класса Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
что будет если все время дергать DriverManager? - при загрузке(перезагрузке) "информсистемапредприятия" типа раз в месяц, прописав регистрацию где то в инициализации? - что то еще? Заранее спасибо за ответы по ЗАДАННЫМ вопросам ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 11:51 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
Погуглить - совсем не судьба ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 12:03 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
Pcrepair, В init сервлета делаешь Class.forName Потом на post getConnection И в конце сервлета все закрыл. Всё. Потом уже есть вариант оформления коннекта в админке напр GlassFish ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 12:04 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
что будет если все время дергать DriverManager? а где в приведенном Вами коде дерганье DriverManager'а? IMHO (даже не rtfm т.к. не знаю, не разбирался) скорее всего ничего не будет дернется Class (максимум класс-лоудер), он посмотрит, что такой класс уже есть, вернет управление и ничего делать не будет ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 12:05 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp В init сервлета делаешь Class.forName P.S. Проблемы не только с погуглить, но и со сходить по ссылке? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 12:08 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Не преувеличивай. Мой проект 5 лет работал на голом jdbc)) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 12:11 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Basil A. Sidorov, Не преувеличивай. Мой проект 5 лет работал на голом jdbc)) Зачем для сервлета вручную подгружать драйвера? Когда есть JNDI и пул соединений. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 13:24 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Basil A. Sidorov, Не преувеличивай. Мой проект 5 лет работал на голом jdbc)) А он говорит не про голый jdbc. А про то как работает getConnection. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 13:27 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
mayton, Вы странные люди. Автор спросил не про JNDI. Я ему дал ОБА варианта. С ним и без него КАК ПРОСИЛИ. )))) LOL ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 14:01 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
mayton, Код не дам на тарелочке. Фигушки. Пока автор не поработает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 14:02 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
Петя ты конешно извини. Но мне кажется что твой акк захватили боты. Ты вообще-вообще не читаешь то что постят другие мемберы. Вторым постом Василий дал точный ответ по теме. А ты - свернул в какие-то сервлеты... init... Это же вообще не про это! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 14:08 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
mayton, Ответь на это без SO. Не надо про других. Сам ответь. авторВопрос: в реальном ентапразе (информсистемапредприятия на глассфиш) когда должна происходить регистрация драйвера - всякий раз когда идет обращение к БД, типа вызов класса public class ConnectToMySQL { static { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException ex) { //System.err.println("Unable to load MySQL Driver"); } } } ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 14:16 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
mayton, А) идет ли обращение к бд Б) если это нивелировать то куда помещать код. Как? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 14:18 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
Pcrepair, В Glassfish (и других app серверах) соединение с СУБД настраивается на самом сервере и нужные для этого драйвера там же указываются. Про JDNI почитайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 14:20 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
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 для этого, а он уже обращается к драйверу. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 14:25 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Ответь на это без SO Java 6+ автоматически загружает JDBC-драйверы из класс-путя. И за полтора десятка прошедших лет об этом уже можно было бы как-то узнать. Хоть с помощью SO, хоть путём чтения документации и примеров. P.S. Да, есть (были?) проблемы у этого механизма, но решаются они тривиальным чтением документации на какой-нибудь servlet-контейнер. Лично я читал доку котяры. Лет этак восемь назад. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 14:27 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Я понимаю что устарело и счас модно микросервисы. Сам я перешел на JNDI в GlassFish Но вопрос в том что легаси перестало работать? Без JNDI? Или просто депрекатед? Или? Тема вообще звучит "нет полной ясности". А не так чтоб работало. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 14:36 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Ты не прав. Без JNDI нет удобного кода без проверки загрузки драйвера как я сказал. С jndi с тобой никто не спорит. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 15:08 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Basil A. Sidorov, Ты не прав. Без JNDI нет удобного кода без проверки загрузки драйвера как я сказал. С jndi с тобой никто не спорит. тут я уже перестал понимать буквосочитание "нет удобного кода без проверки загрузки драйвера" мне не понятно. Возможно по дороге произошли проблемы с кодовой страницей ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 15:12 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Смотри. Class.forName.... Или DriverManager.registerDriver... Необходимо и удобно вызывать в методе без JNDI. Так?. Что я и делаю при вызове оракла. Так? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 15:18 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, А) обязательный вызов Б) удобство - контроль ошибок по наличию дров ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 15:20 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp ...Необходимо... ??? Если я правильно понял ссылку, где английским черными буквами по белому LCD экрану, то - нет. Такой необходимости уже нет. Но лично я - просто не помню. Просто беру пример из соединения из доки к JDBC драйверу и его копирую. Есть там Class.forName, нет там Class.forName - лично мне фиолетово, даже и не помню. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 15:23 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Basil A. Sidorov, Я понимаю что устарело и счас модно микросервисы. Сам я перешел на JNDI в GlassFish Но вопрос в том что легаси перестало работать? Без JNDI? Мне почему-то было ясно что ты свернешь на легаси. Что там у тебя? Sybase ? Informix? Lotus Notes? И что ты за 10 лет ниразу не обновил дрова? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 15:28 |
|
Загрузка драйвера JDBC. Нет полной ясности.
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Class.forName.... Или DriverManager.registerDriver... Это всё ненужно. Только смотри внимательно как ты включаешь артифакты в проект. Есть некоторые перцы которые jdbc-driver плагинами пересобирают в толстый jar... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 15:31 |
|
|
start [/forum/topic.php?fid=59&msg=40091847&tid=2120369]: |
0ms |
get settings: |
24ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
491ms |
get tp. blocked users: |
1ms |
others: | 283ms |
total: | 870ms |
0 / 0 |