Как мне подключиться к базе данных? - PullRequest
0 голосов
/ 06 сентября 2010

Hii,

Я разрабатываю приложение, где столкнулся с этой проблемой ... У меня есть этот графический интерфейс, где у меня много кнопок ... Каждая кнопка выполняет какое-то действие, например INSERT, SELECT, UPDATE, УДАЛИТЬ, ПРОСМОТРЕТЬ и т.д. ... в базе данных.Мой вопрос ...

Лучше ли, чтобы одно соединение открывалось на протяжении всего времени жизни этого конкретного класса и закрывалось, когда этот класс больше не используется ... или мне следует открытьСоединение с БД на лету и закрытие сразу же после выполнения операции ...

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

Если я выберу второй случай, это не будет накладывать какие-либо издержки на частое открытие и закрытие соединений ... учитывая, что пользователь может выполнять только БДОперации с этого экрана (допустим, скажем) ...

Если нам требуется несколько соединений, является ли пул соединений лучшим вариантом ...?

Я на самом деле не знаю и, пожалуйста, исправьте меняесли я ошибаюсь ... Приносит ли Conncetion DB какие-либо существенные издержки системе с точки зрения памяти ...?

Ответы [ 4 ]

5 голосов
/ 06 сентября 2010

Вообще говоря, рекомендуется открывать соединение как можно позже, а затем закрывать его как можно скорее. И да, пул соединений работает очень хорошо в большинстве крупных систем, поэтому затраты на получение нового соединения практически ничтожны по сравнению с реальным вызовом в базу данных.

2 голосов
/ 06 сентября 2010

Лучше ли иметь одно открытое соединение на все время существования этого конкретного класса и закрывать, когда этот класс больше не используется ... или я должен открыть соединение с БД на лету инемедленно закрыть операцию ...

всегда требуется, чтобы открыть соединение и выполнить всю вашу транзакцию, и как только вы закончили свои транзакции, зафиксируйте, а затем закройте.

В параллельных системах рабочие потоки создаются для каждого сеансового вызова вашего приложения, поэтому вам не нужно, чтобы все подключения транзакций JDBC создавались для каждого рабочего потока.Решение: Пул соединений

Из Oracle MySQL Страница

Что такое пул соединений?

Пул соединений - это метод создания и управления пулом соединений, которые готовы к использованию любым потоком, которому они нужны.

Этот метод «пула» соединений основан на том факте, что большинство приложений тольконужен поток, чтобы иметь доступ к соединению JDBC, когда они активно обрабатывают транзакцию, что обычно занимает всего миллисекунды.Если не обрабатывать транзакцию, соединение в противном случае будет бездействующим.Вместо этого пул соединений позволяет незанятому соединению использоваться другим потоком для выполнения полезной работы.

По сути, пул соединений позволяет использовать незанятые соединения другим потоком вместо создания соединений для каждогоthread.

Помните, что соединения с базой данных должны быть открыты на короткий промежуток времени (или оптимальное время из-за тайм-аута), так что ваши запросы SQL должны быть очень оптимальными для соединения с БД, получать результаты и возвращать объекты очень эффективно.

Надеюсь, это поможет вашей ситуации.

1 голос
/ 06 сентября 2010

При работе с базой данных в вашем приложении вы можете учитывать следующие два момента:

  1. Однопользовательская база данных / встроенная база данных: база данных является эксклюзивной для вашего приложения.
  2. Single-Пользовательское приложение: Ваше приложение является настольным приложением.
  3. Многопользовательское приложение: типичное веб-приложение.

Для 1. и 2. нет никакого смысла против сохранения одного эксклюзивногосоединение для приложения.Просто убедитесь, что логика транзакций работает правильно.Также не забудьте корректно обработать тайм-аут соединения.

Для 3. Вы определенно хотите иметь пул соединений и приобретать одно из подключенных соединений только в то время, когда оно вам действительно нужно.

Что касается накладных расходов: я не думаю, что это накладные расходы памяти, но возможная потеря производительности, особенно при использовании удаленной базы данных, потому что вам нужно инициализировать новый ресурс соединения каждый раз, когда вы делаете «свежее» соединение.

Также, в зависимости от используемых вами фреймворков / библиотек, вы можете посмотреть, как они могут поддерживать программирование вашей базы данных.

0 голосов
/ 06 сентября 2010

Рави, возможно, лучший ответ для тебя - ни тот, ни другой. Вы можете использовать существующую среду Java, такую ​​как Spring (http://www.springsource.org/), которая обрабатывает соединения с базой данных для вас. Использование платформы позволяет вам сосредоточиться в основном на бизнес-логике; платформа обрабатывает большинство соединений с базой данных. Компонент базы данных работает медленно после завершения первой итерации приложения, затем вы можете оптимизировать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...