Пул соединений с базой данных и соединение с базой данных? - PullRequest
0 голосов
/ 01 марта 2011

Я создал настольное приложение и подключил его к базе данных MySQL с помощью подключения к базе данных (bean / class), и я могу использовать CRUD. На сайте NetBeans я видел, что они создают пул соединений в веб-приложении.

Является ли пул соединений тем же классом / компонентом в настольном приложении?

Означает ли это, что я создаю bean-компонент / класс, такой как настольное приложение, которое связано с моделью БД (MVC), или я должен сделать что-то еще?

На сервере Glassfish вы создаете пул соединений с помощью мастера; на Apache у тебя нет. Нужно ли создавать компонент соединения с БД для Apache?

Какова практика (бины, что-то еще?) Для подключения БД к веб-приложению?

Я также читал о Hibernate, но я не понимаю, как его использовать. Где может помочь спящий режим? Я имею в виду, что это ORM, но что мне может сделать Hibernate, чтобы мой код был проще? Я думаю, что упускаю из виду ORM

Ответы [ 2 ]

0 голосов
/ 01 марта 2011

В Java для подключения к БД всегда используется драйвер JDBC. Ни одна БД, о которой я знаю, не позволяет выполнять более одной команды SQL через одно соединение одновременно , поэтому каждое соединение становится узким местом, если ваше приложение может выполнять несколько команд SQL одновременно (обычно чехол для веб-серверов, где сотни пользователей могут одновременно взаимодействовать с базой данных).

ОБНОВЛЕНИЕ : Я говорю следующее: вы можете легко объединять команды в одно соединение (например, UPDATE ... ; COMMIT), но вы не можете отправлять две UPDATE команды одновременно - вам всегда нужно ждать завершения первой команды, прежде чем вы сможете отправить следующую. Некоторые базы данных позволяют отправлять несколько команд в одном запросе, но они выполняются одна за другой , а не все одновременно . Подумайте об этом: если бы вы могли выполнять несколько команд одновременно по одному соединению, как бы вы узнали, в каком порядке они выполнялись?

Кроме того, создание соединений с БД обходится дорого для большинства БД. Следовательно, они создаются заранее во время запуска приложения и хранятся в пуле. Как только вы подключаетесь к базе данных с помощью драйвера JDBC в пуле, он выбирает неиспользуемое соединение из пула и возвращает его. Это (почти) не занимает много времени. Когда вы «закрываете» соединение, оно возвращается в пул.

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

Со стороны приложения это либо прозрачно (большинство драйверов JDBC либо объединяются в пул сегодня, либо имеют API-интерфейс пула). Если драйвер JDBC этого не делает, вы всегда можете использовать пул, такой как DBCP. Пул обрабатывает все неприятные детали, и вы пишете свое приложение на основе API пула, а не напрямую используете JDBC. Документы расскажут вам, как это сделать.

Как Hibernate другой зверь. Hibernate - это слой поверх JDBC, который может преобразовывать POJO в SQL и обратно.

Таким образом, вместо того, чтобы сказать INSERT INTO data(ID, VALUE) values (?, ?), вы можете сказать

class Pojo { long id; String value; }
Pojo demo = new Pojo();
demo.value = "Test";

session.persist(demo);

и Hibernate создаст для вас SQL и отправит его в БД. На данном этапе это не делает вашу жизнь проще. Hibernate начинает светиться, когда вы меняете Pojos:

class Pojo { long id; String value; 
    String name; // Oops ... forget the name
}
Pojo demo = new Pojo();
demo.name = "John";
demo.value = "Test";

session.persist(demo);

Hibernate соответствующим образом изменит определение БД и обновит все команды SQL, необходимые для загрузки и сохранения объектов.

0 голосов
/ 01 марта 2011

Hibernate поможет вам с управлением транзакциями. Это позволит вам открыть несколько различных соединений с базой данных, а также выдает предупреждения при использовании недоступных объектов (например, бинов, которые извлекаются из разных потоков).

Конкретный пример того, как ORM Hibernate облегчит ваш код, - это когда вы запрашиваете БД. Вместо написания стандартных запросов SQL в виде строк вы можете использовать Критерии -запросы.

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