2011-10-14 15 views
5

Mam zamiar utworzyć połączenie z moją bazą danych i używam EJB i JPA. Niedawno zacząłem robić te technologie, więc mam pewne problemy, aby to wszystko zrozumieć w tej chwili :) Wiem, że plik persistence.xml jest potrzebny do korzystania z JPA. Jest to plik, w którym konfiguruję sposób łączenia się z bazą danych, którą znam. Wydaje się jednak, że jest na to wiele sposobów.Pewne zamieszanie wokół zasobów JDBC i pul połączeń JDBC Glassfish

Jaka byłaby różnica (lub kiedy powinienem użyć jednej alternatywy względem drugiej?) Definiowania właściwości, takich jak nazwa użytkownika, baza danych, hasło itp. W pliku persistence.xml oraz w Glassfish? Zalety/wady, jeżeli występują.

Poniżej zamieszczonego zdjęcia mam zasoby JDBC i puli połączeń JDBC. Jestem trochę zdezorientowany terminologią tych dwóch. Dlaczego nie dodamy właściwości, takich jak nazwa użytkownika, baza danych, hasło itp. W zasobach JDBC? Czy ktoś mógłby wyjaśnić różnicę między nimi a tym, co one oznaczają?

JDBC Resources

JDBC zasób (źródło danych) dostarcza aplikacje w środki łączący się z bazą danych. Zwykle administrator tworzy zasób JDBC dla każdej bazy danych, do której dostęp mają aplikacje wdrożone w domenie . (Jednak więcej niż jeden zasób JDBC mogą być tworzone na bazie .) http://download.oracle.com/docs/cd/E19316-01/820-4335/ablih/index.html

myślę, że to dziwne, że możemy dodać takie właściwości, na basenie, ale nie w zasobie, ale prawdopodobnie nie rozumieją pojęcia.

enter image description here

Odpowiedz

6

W „JDBC pula połączeń” można utworzyć pojemnik udało źródeł danych JDBC (z możliwościami łączenia połączenia). Źródło danych musi znać co najmniej sterownik JDBC, adres URL JDBC, nazwę użytkownika i hasło.

W "Zasobach JDBC" można powiązać te źródła danych JDBC zarządzanych kontenerami z jedną lub kilkoma nazwami JNDI, aby były dostępne dla JNDI wdrożonej aplikacji internetowej.

W persistence.xml można określić, czy użyć lokalnego źródła danych, czy użyć źródła danych zarządzanego przez kontener. Aby użyć źródła danych zarządzanego z kontenera, należy podać jego nazwę JNDI. Korzystanie ze źródła danych zarządzanego przez kontener ma tę zaletę, że można udostępniać jedno źródło danych wśród wielu aplikacji internetowych. W przypadku JPA ma także tę zaletę, że można korzystać z JTA (transakcje zarządzane przez kontener), aby w każdej metodzie nie trzeba było dzwonić pod numer transaction.begin(), commit(), rollback() itd.

+0

Kiedy ustawiasz właściwości w pliku persistence.xml? Kiedy masz aplikację w Java SE? Ale w przeciwnym razie jest to zasadniczo te same właściwości i tak można je zdefiniować w pliku persistence.xml? – LuckyLuke

+0

Tak, tylko w zwykłej waniliowej aplikacji Java SE ma to sens (na przykład, gdy chcesz przetestować swój projekt JPA). W kontenerze Java EE naprawdę chciałbyś skorzystać z JTA z zasobami zarządzanymi przez kontener, aby Twoje EJB mogły dobrze wykonywać swoją pracę w kontekście transakcyjnym. Zwykle podajesz inny "persistence.xml" w swoim projekcie sieciowym, który dziedziczy klasy z projektu JPA i zastępuje typ transakcji JTA, wraz z '' wskazuje na nazwę JNDI kontenera zarządzane źródło danych. – BalusC

+0

Okey, wtedy myślę, że zaczynam to rozumieć :) – LuckyLuke