Некоторая путаница вокруг ресурсов JDBC и пулов соединений JDBC Glassfish - PullRequest
6 голосов
/ 14 октября 2011

Я собираюсь подключиться к своей базе данных и использую EJB и JPA. Я недавно начал заниматься этими технологиями, поэтому у меня есть некоторые проблемы с пониманием всего этого на данный момент :) Я знаю, что файл persistence.xml необходим для использования JPA. Это файл, в котором я настраиваю, как подключиться к базе данных, я знаю это. Однако, кажется, что есть несколько способов сделать это.

Какая будет разница (или когда мне даже следует использовать одну альтернативу над другой?) В определении свойств, таких как имя пользователя, база данных, пароль и т. Д., В файле persistence.xml и в Glassfish? Преимущества / недостатки, если таковые имеются.

Ниже на изображении, которое я разместил, у меня есть JDBC Resources и JDBC Connection Pools. Я немного запутался в терминологии двух. Почему бы нам не добавить такие свойства, как имя пользователя, база данных, пароль и т. Д. В ресурсы JDBC? Может ли кто-нибудь объяснить разницу между ними и что они имеют в виду?

JDBC Resources

Ресурс JDBC (источник данных) предоставляет приложениям средства подключение к базе данных. Как правило, администратор создает JDBC ресурс для каждой базы данных, к которой обращаются приложения, развернутые в домен. (Тем не менее, для одного база данных.) http://download.oracle.com/docs/cd/E19316-01/820-4335/ablih/index.html

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

enter image description here

1 Ответ

6 голосов
/ 14 октября 2011

В «пулах соединений JDBC» вы можете создавать управляемые контейнером источники данных JDBC (с возможностями пула соединений). Источник данных должен знать как минимум драйвер JDBC, URL JDBC, имя пользователя и пароль.

В разделе «Ресурсы JDBC» вы можете привязать эти управляемые контейнером источники данных JDBC к одному или нескольким именам JNDI, чтобы они по JNDI были доступны для развернутого веб-приложения.

В persistence.xml вы можете указать, использовать ли локальный источник данных или использовать управляемый контейнером источник данных. Если вы хотите использовать управляемый контейнером источник данных, вам следует указать его имя JNDI. Преимущество использования источника данных, управляемого контейнером, заключается в том, что вы можете совместно использовать один источник данных для нескольких веб-приложений. В случае с JPA у него также есть преимущество в том, что вы можете использовать JTA (транзакции, управляемые контейнером), так что вам не нужно вызывать transaction.begin(), commit(), rollback() и т. Д. В каждом методе.

...