Pierce111 napisał(a)
Dzięki, i jeszcze w takim razie :
- Czyli za pomocą obiektów encji można co najwyżej dodawać nowe rekordy do bazy i ewentualnie je potem zmieniać (przez obiekty encji w trybie managed ) ale nie można się odnieść do rekordów już istniejących w bazie (powstałych poza JPA)?
- Metoda "find(params)" wywołana na EntityManger'ze może zwrócić tylko obiekty encji stworzone przez programistę w toku programu a nie zwróci obiektów encji z rekordów bazy których programista sam nie stworzył (właśnie przez encje) ?
- Jak dobrać się do "starych" rekordów bazy (niedodanych przez obiekty encji) w JPA? Czy można to zrobić przez Query czyli zapytani stworzone na EntityManager'ze (metoda CreateQuery) będące zapytaniem typu Select a potem pobrać z tego Query wynik np w formie encji JPA? W API Query jest metoda "getReasultList()" zwracająca listę wyników zapytania - może przez nią można dobrać sie do "starych" rekordów?
Metody find/createQuery służą do pobierania danych z bazy.
Nie ma znaczenia, czy dane te znalazły się tam, bo je wrzuciła aplikacja, czy też dlatego, że ktoś wykonał ręcznie insert.
Pierce111 napisał(a)
Tak, czytałem dla extended o tym że tylko dla stateful EJB i że jest Context dziedziczony do zależnych stateful beanów. Z kolei dla transacion-scoped Context istnieje tylko w ramach jednej transakcji czyli dla CMT beana transakcja to może obejmować jedną metodę tego beana (dla TransactionAttribute.Required gdy nie ma zewnętrznej transakcji). Z tego wynika że po każdym wywołaniu metody beana powstały Persisstence Context jest niszczony. Czy tak (bo trochę dziwne podejście : ))?
No i jeszcze ten podział extended i transaction-scoped jest dokonywany w ramach JTA Entity Manager. No ale JTA to też (a może głownie) transakcje z udziałem UserTransaction a wszystkie przykłady dla extended i transaction-scoped w dokumentacji przedstawili dla beanów CMT czyli bez użycia UserTransaction. Czy w takim razie te tryby extended i transaction-scoped (czyli cały zakres dla JTA Entity Manager) mogą być użyte w BMT beanie z użyciem UserTransaction? W ogóle o tym nie wspominają.
Moim zdaniem najbardziej praktycznym połączeniem jest CMT+kontekst transaction-scoped+JTA.
Jeżeli dobrze się nauczyć tego połączenia, to będziesz mógł obsłużyć 90%-100% przypadków.
Dopiero, gdy poznasz JPA lepiej proponuję naukę innych połączeń.
(jeżeli będziesz się bawić np. Jboss seam, to musisz też poznać kontekst typu extended)