powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Загрузка драйвера JDBC. Нет полной ясности.
41 сообщений из 41, показаны все 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
Загрузка драйвера JDBC. Нет полной ясности.
    #40091888
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
И на легаси я не сворачивал). Спринг бут вполне работает.
Аллергия только на микросервисы.))
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091889
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебя не переговоришь.... Ладно. Чорт с тобой. Живи с new oracle.driver.OracleDriver()...
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091890
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
Basil A. Sidorov,
Счас проверил, работает и так и так.
Посыпаю голову пеплом.
"Строка теперь лишняя но ничего не ломает если есть. "
Спс.
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091892
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Тебя не переговоришь.... Ладно. Чорт с тобой. Живи с new oracle.driver.OracleDriver()...
угу.
Зато полная ясность)
Проехали.
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091966
O_79_O
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
Leonid Kudryavtsev,
Смотри.
Class.forName....
Или
DriverManager.registerDriver...
Необходимо и удобно вызывать в методе без JNDI.
Так?. Что я и делаю при вызове оракла.
Так?

так джун,давай код- работай,если не умеешь гуглить!
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40091971
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
O_79_O,
)))
А мы думали "ты уже всё")))
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40092303
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Желающие навести критику могут начинать

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
// класс обертка для контроля работоспособности класса RegJdbcDrv

public class MainApp {
	public static void main(String[] args) {

		boolean isReady = false;

		isReady = RegJdbcDrv.isDrvRegisted(args[0]);

		if (isReady) {

			System.out.println("Driver " + args[0] + "is present");

		}
	}
}




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
// class ctrl and set jdbc driver

import java.sql.Driver;
import java.lang.ClassNotFoundException;

public class RegJdbcDrv {

	// method isDrvRegisted
	public static boolean isDrvRegisted(String DrvName) {
		boolean isReady = false;

		try {
			Class.forName(DrvName);
			isReady = true;
			return isReady;

		} catch (ClassNotFoundException exp) {
			
			//System.out.println("Unable to load JDBC Driver");
			// log
		}
		return isReady;
	} // end method
	
}




Компиляция:
javac -encoding UTF-8 -cp .; MainApp.java
java -cp .; MainApp com.mysql.jdbc.Driver
Driver com.mysql.jdbc.Driveris present
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40092306
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair, фигня какая-то. А ну давай вообще все драйвера известные науке. Найдешь?
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40092307
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,
Напиши что то полезное.
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40092311
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В моей задаче кстати исходными данными является только переменная CLASS_PATH.

И больше знаний не потребуется.
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40092336
Pcrepair
Желающие навести критику могут начинать
Расписывали все, раскладывали по полочкам, ссылки давали. Но лучше конечно все это пропустить мимо ушей и сделать по-своему :)
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40092349
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev

1. Мы никогда не работаем с DriverManager или нативным DataSource от драйвера напрямую. Мы используем DB Pool для этого, а он уже обращается к драйверу.

Станислав. А какой вы пул используете? Apache Commons? Hikari?
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40092351
Я C3P0 всегда использовал, ну и немного игрался с tomcat-jdbc. C3P0 меня никогда не подводил, поэтому не было желания тестировать другие.
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40092354
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы в основном Хикари. Где-то в хабре статья была с бенчмарками. Мы кажется выбирали тогда между Apache DBCP/Hikary.

Выбрали последний. Вроде работает. Не жалуемся.
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40092426
O_79_O
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pcrepair
Желающие навести критику могут начинать

Код: java
1.
		boolean isReady = false;



начинаю критику- за эту строчку ты бы вылетел пинком под зад с любой it конторы- гугли что тут не так и почему эта строчка говорит о тебе ,как о полнейшем профане в джава- это даже не джун и даже не стажер
...
Рейтинг: 0 / 0
Загрузка драйвера JDBC. Нет полной ясности.
    #40092475
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
O_79_O, а давайте вы добавите конкретики в свои (тупые) наезды.
"Да бы дурость каждого ..."
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Загрузка драйвера JDBC. Нет полной ясности.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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