| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Connection with MySQL |
| Автор: NewProgr 6.9.2006, 04:21 |
| Подскажите, пожалуйста, кому не сложно самый простой способ создания Connection с базой MySql (чем подробнее, тем лучше) для сервера Tomcat 4.1 пусть: база MySQL: javatest user : Test password : test Заранее благодарен |
| Автор: Alexandr87 6.9.2006, 06:47 |
| я предпочитаю использовать источники данных, получаемых по jndi. http://tomcat.apache.org/tomcat-4.1-doc/jndi-datasource-examples-howto.html но можно использовать jdbc напрямую http://www.developer.com/java/data/article.php/3417381 |
| Автор: Gliven 6.9.2006, 20:50 | ||||||
Вот еще способ конекшена через JDBC:
Или через hibernate:
Добавлено @ 20:55 Да, забыл сказать, прописи пароля, базы описываешь в hibernate.cfg.xml:
Данный xml описан под работу с MySQL. |
| Автор: tux 7.9.2006, 04:34 |
| Gliven, настройки соединения с MySQL в Tomcat ведь попросили, а не как настроить Hibernate. |
| Автор: tux 7.9.2006, 08:37 |
| Bulat, одно замечание насчет использования твоего кода в production. Если у тебя этот класс используется в толстом клиенте (например, Swing-приложение), то его применение вполне оправдано. Один пользователь - одно соединение, которое поддерживается в открытом состоянии на все время работы приложения. Если это веб-приложение, то здесь все несколько сложнее. В принципе можно использовать ту же самую схему - подключается новый пользователь, открывается соединение и использует постоянно на протяжении сеанса. Но веб-приложения традиционно обслуживают большее число пользователей чем разработанные по схеме толстый клиент. Да и в том случае если подразумевается, что со Swing-приложением будет работать очень большое количество пользователей такая схема не применяется. Причина проста: каждое соединение - это область памяти на сервере, может быть и не очень большая, но когда их много, это становится проблемой. Кроме того, поток запросов от пользователей, как правило, не очень интенсивен. Получается, что подавляющую часть времени это огромное число соединений не используется. А это, сам понимаешь, не эффективно. Кроме того, таким образом можно легко превысить максимальное количество соединений, которые СУБД может открыть. Как же бороться с этой неэффективностью? А проблема решается достаточно просто. Во всех реальных больших веб-системах, работающих с базами данных используются пулы соединений. Создается массив соединений, ограниченный по количеству снизу и сверху (то есть минимальное количество соединений, которые открыты всегда и максимальное, больше которого открыть не разрешается чтобы не превысить ограничения СУБД). При попытке получить пользователем новое соединение менеджер пула соединений сначала смотрит а нет ли среди открытых соединений свободных, которые могут быть использованы. Если есть, то возвращает одно из них. Если нет, то проверяет не превышено ли доступное количество открытых соединений. Если нет, то открывает новое и возвращает клиенту. Если превышено, то запрос на соединение просто блокируется до тех пор пока хотя бы одно из соединений не освободится. При закрытии соединения клиентом соединение не закрывается реально, а помещается в массив свободных соединений. Что получаем в результате:
Кстати, Hibernate даже в дефолтной кофигурации все-таки использует пул соединений, правда свой собственный и совсем простенький. И они рекомендуют использовать Hibernate на реальной нагрузке только в комбинации с какой-нибудь серьезной библиотекой, обеспечивающей организацию пула. |
| Автор: Bulat 7.9.2006, 11:30 | ||
А зачем только тоскать соединение на протяжении сеанса? Если у меня пользователь пассивно весит, т.е. в браузере открыта страница, так и может висеть весь день а то и больше? Если ему что-то надо приконнектился, вывел необходимые данные на страницу, закрыл коннект. |
| Автор: tux 7.9.2006, 11:39 | ||
Тогда длительность подключения может в конечном счете сказать на производительности. Согласен, в MySQL создание соединения проходит достаточно быстро и на приложении с небольшим числом клиентов ощутимой разницы не будет. Но в многих СУБД процесс подключения хорошо заметен даже на глаз. Кроме того, еще одно достоинство пула - можно контролировать количество одновременно открытых соединений в то время как в твоей конструкции при превышении лимита СУБД во время пиковых нагрузок просто будет отказывать в подключении. |
| Автор: Bulat 7.9.2006, 12:31 | ||
Это уже другой вопрос, и тут я с тобой полностью согласен Надо всегда смотреть по обстоятельствам |
| Автор: NewProgr 8.9.2006, 09:17 | ||
| Народ, огромное спасибо за участие. Сделал на JNDI. А как на JSP странице писать русскими буквами при настройке :
т.е. чтобы русский текст в html тегах отображался корректно? |
| Автор: tux 8.9.2006, 09:53 | ||
|
| Автор: NewProgr 8.9.2006, 12:24 |
| Виноват, извиняюсь |