Enterprise JavaBeans 3.0



Podobne dokumenty
Enterprise JavaBeans

EJB 3.0 (Enterprise JavaBeans 3.0)

Enterprise JavaBean 3.0

Enterprise JavaBeans. 1. Architektura EJB: komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 2. Kontenery EJB JBoss.

Bazy danych tworzenie aplikacji bazodanowych ORM / JPA

Tworzenie aplikacji dla Oracle Application Server 10g R3 w technologii EJB 3.0

Programowanie komponentowe 5

Java wybrane technologie

EJB 3.0 & JBoss Seam. 25 kwietnia 2007 Jacek Gerbszt 1

Rola EJB na platformie Java EE. Enterprise JavaBeans (EJB)

EJB 2.x oraz zmiany w standardzie dla EJB 3.0. Michał Stanek

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

JAVA PERSISTENCE API CZĘŚĆ 2 ASPEKTY ZAAWANSOWANE. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Co nowego w Java EE?

E:\DYDAKTYKA\ZAI\ZWWW\Laboratoria\L07\Java Persistence.doc 2011-lis-24, 17:0 Zaawansowane aplikacje internetowe Laboratorium Java Persistence.

Enterprise Java Beans Narzędzia i Aplikacje Java EE

Co nowego w Java EE?

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Enterprise JavaBeans (EJB)

Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate

Modele komponentowe SCA, OSGi, Distributed OSGi i OSGi Enterprise a Java EE

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Platforma J2EE i EJB. Oprogramowanie systemów równoległych i rozproszonych Wykład 9. Rola EJB na platformie J2EE. Dr inż. Tomasz Olas olas@icis.pcz.

Bezstanowe komponenty sesyjne i zdarzenia zwrotne

Contexts and Dependency Injection (CDI) Autor wykładu: Marek Wojciechowski

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1

Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie

Aplikacje internetowe i rozproszone - laboratorium

Nowy powiew od Słońca: EJB 3.0. Copyright Piotr Kochański & Erudis,

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Usługa TimerService

Stanowe komponenty sesyjne

Dostęp do baz danych w aplikacjach Java EE

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Wprowadzenie do Enterprise JavaBeans 2.0

JSF 1.2. w wykonaniu NetBeans IDE 6.1. Jacek Laskowski

Hibernate mapowanie baz danych

JAVA PERSISTENCE API. Wykorzystano fragmenty wykładów M. Piotrowskiego i M. Wójcika. Waldemar Korłub

Komponenty sterowane komunikatami

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Podstawowe informacje o technologii Java EE 7

Zastosowanie komponentów EJB typu Session

mgr inż. Michał Paluch

Tomasz Dobek.

Programowanie obiektowe

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Programowanie obiektowe

Hibernate. Adrian Gawor, Adam Klekotka, Piotr Kubisz. Technologie Biznesu Elektronicznego. 12 maja 2009

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Podstawy frameworka Spring

Java EE: JSF + EJB + JPA + CDI + BV

NHibernate Hibernate dla platformy.net. Hibernate posiada także dużą społeczność, zatem nietrudno uzyskać jakieś wsparcie w przypadku problemów.

AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Elektroniki i Informatyki

SOP System Obsługi Parkingów

JBoss Seam: framework nowej generacji. Copyright Piotr Kochański & Erudis,

Zaawansowane aplikacje internetowe

Zwinne i lekkie aplikacje webowe z. Jacek Laskowski

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

JAVA EE MODEL APLIKACJI. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

ORM w Javie. Adam Michalik 2007

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Programowanie komponentowe

Zaawansowane aplikacje internetowe - laboratorium

Wzorce logiki dziedziny

1 Wprowadzenie do J2EE

Aplikacje RMI

Enterprise Java Beans wykład 7 i 8

Automatyczne generowanie kodu. 4Developers, 26 marca 2010

Obsługa transakcji rozproszonych Java. Marek Wojciechowski, Maciej Zakrzewicz Instytut Informatyki, Politechnika Poznańska

Enterprise JavaBeans (EJB)

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Podstawowe informacje o technologii Java Persistence API - przykład

1. Model ACID. 2. Deklaratywne zarządzanie transakcjami, atrybuty transakcji. 3. Propagacja transakcji. transakcje rozproszone, propagacja kontekstu

Programowanie w języku Java WYKŁAD

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

JAX-RS czyli REST w Javie. Adam Kędziora

Nowoczesne aplikacje internetowe oparte na Seam, JSF, EJB3, JPA, AJAX

Java Enterprise Edition spotkanie nr 6. przygotował Jacek Sroka. Java Persistence API

Metody dostępu do danych

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Java EE: JSF + EJB + JPA

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

SPRING FRAMEWORK. dr inż. Jakub Chłapioski

Karolina Rusin, Paweł Biczysko, Michał Olejnik. 11 maja 2009

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Budowa komponentów Enterprise JavaBeans

Podstawowe wykorzystanie Hibernate

JPA Java Persistance API

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Zasady generowania kluczy głównych Język Java Persistence Podstawowa architektura wielowarstwowych aplikacji w oparciu o wzorce oprogramowania

Zaawansowane Techniki Bazodanowe

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Transkrypt:

Enterprise JavaBeans 3.0 Jacek Laskowski http://www.jaceklaskowski.pl Politechnika Poznańska Poznań, 07.12.2007, wersja 1

O mnie... Entuzjasta technologii Java EE 5 Założyciel i lider Warszawa JUG Członek zespołów rozwojowych Apache Geronimo, Apache OpenEJB, Apache ServiceMix, Apache ActiveMQ, Apache XBean Uczestnik programów NetBeans Community Acceptance Test (NetCAT) 5.0, 5.5 i 6.0 Prowadzi Notatnik Projektanta Java EE - http://www.jaceklaskowski.pl Założyciel Polskiej Grupy Użytkowników Technologii BEA (PLBUG) Służbowo: konsultant oprogramowania w IBM

Certyfikacja SCBCD 5

Literatura

Specyfikacje

Enterprise JavaBeans 3.0 Enterprise JavaBeans (EJB) rozproszony model komponentów aplikacyjnych Część Java EE 5 Specyfikacja EJB3 zatwierdzona 2 maja 2006r. Implementacje: GlassFish referencyjna implementacja Java EE 5 Apache Geronimo 2 z Apache OpenEJB 3 IBM WebSphere Application Server 6.1 z EJB 3.0 Feature Pack BEA WebLogic Server 10 JBoss AS 4.2.2 z dodatkiem EJB 3.0

Fundamenty EJB3 POJO (ang. Plain-Old Java Object) powrót do korzeni JavaBeans Konfiguracja przez nadpisywanie (ang. configuration by exception) Java SE 5 a przede wszystkim adnotacje Wstrzeliwanie zależności (ang. DI dependency injection) Interceptory (ang. interceptors) Plik jar jako format dystrybucji

Projekty otwarte a EJB3 Kształt EJB3 pod wpływem projektów otwartych (ang. OSS open source software) Spring Framework Hibernate XDoclet AspectWerkz/AspectJ...wiele innych

Rezultat prac nad EJB3 Intuicyjne tworzenie komponentów biznesowych Bezinwazyjność realizujemy założenia biznesowe a nie specyfikacji Dowolne Java IDE Brak wymagań odnośnie środowiska programistycznego Możliwość uruchomienia komponentów encyjnych w ramach Java SE Uproszczone testowanie poza środowiskiem serwera aplikacyjnego

Typy komponentów EJB3 Bezstanowe ziarno sesyjne (ang. SLSB stateless session bean) Stanowe ziarno sesyjne (ang. SFSB stateful session bean) Ziarno sterowane komunikatami (ang. MDB message-driven bean) Komponent encyjny encja (ang. entity bean)

Przeznaczenie biznesowe komponentów Ziarno sesyjne nietrwały, ulotny, modeluje akcje (na encjach) SLSB agent bezstanowy (czasownik) SFSB podobnie jak SLSB tyle, że dla wybranego klienta utrzymuje jego stan (rzeczownik) Ziarno sterowane komunikatami asynchroniczna komunikacja Encja trwały (najczęściej baza danych) Encja byt (rzeczownik)

Konfiguracja przez nadpisywanie ang. Configuration by exception (CbE) Brak konfiguracji = w użyciu domyślne parametry konfiguracyjne Porządek ważności parametrów konfiguracyjnych Domyślne wartości (np. @Local, REQUIRED, @PermitAll) Annotacje (np. @Stateless) Deskryptor instalacji (META-INF/ejb-jar.xml)

Korzyści CbE Szybkie tworzenie komponentów Uproszczone prototypowanie Możliwość nadpisywania wartości konfiguracyjnych na życzenie, np. per środowisko Stosowanie annotacji jako dokumentacja kodu i możliwe nadpisanie w deskryptorze instalacji

Typy interfejsów Interfejs biznesowy Lokalny (@Local) Zdalny (@Remote) Interfejs usługi internetowej (ang. web services) - @WebService per klasa lub @WebMethod per metoda (wyłącznie SLSB) Interfejs biznesowy MDB to interfejs usługi komunikatów, np. javax.jms.messagelistener dla JMS

Interceptory Interceptor to metoda przechwytująca zdarzenia związane ze stadiami rozwojowymi ziarna bądź wywołaniem jego metod biznesowych Wyłącznie dla komponentów sesyjnych i MDB Annotacje @Interceptors na klasie komponentu Domyślne interceptory w deskryptorze InvocationContext interfejs komunikacyjny dla wielu interceptorów związanych z pojedyńczym komponentem

Interceptory rozwojowe Interceptory zwrotne związane ze stadiami rozwojowymi ziarna (ang. lifecycle callback interceptor methods) Annotacje @PostConstruct @PreDestroy @PostActivate @PrePassivate Sygnatura: void metoda() i void metoda(invocationcontext)

Interceptory biznesowe Interceptory biznesowe (ang. business method interceptors) uruchamiane przed wywołaniem metod biznesowych @AroundInvoke bądź around-invoke w DD Sygnatura metody: public Object metoda(invocationcontext) throws Exception

Sytuacje wyjątkowe Wyróżniamy wyjątki aplikacyjne i systemowe Wyjątki aplikacyjne związane z działaniem biznesowym komponentu, w ramach aplikacji (deklaracja poprzez throws) @ApplicationException dowolna klasa wyjątku kontrolowanego lub nie, która przekazywana jest klientowi bezpośrednio application-exception w deskryptorze instalacji (ejb-jar.xml) Obsługa transakcji poprzez element rollback

Sytuacje wyjątkowe - cd. Wyjątki systemowe związane z działaniem komponentu jako części serwera RemoteException i RuntimeException i ich podklasy (za wyjątkiem @ApplicationException) Przykłady: Brak połączenia z bazą danych Wyjątki związane z działaniem JNDI Błędy wirtualnej maszyny Java (JVM) Opakowane jako javax.ejb.ejbexception W efekcie wycofanie transakcji i usunięcie komponentu z systemu

Tworzenie ziarna EJB3 2-krokowy proces: 1.Definiowanie interfejsu biznesowego 2.Klasa ziarna jako implementacja interfejsu biznesowego

Komponent EJB3 - przykład Interfejs biznesowy - ExamScheduler package pl.jaceklaskowski.exam.scheduler; import java.util.list; import pl.jaceklaskowski.exam.beans.exam; public interface ExamScheduler { } List<Exam> getexams();

Komponent EJB3 - przykład Klasa komponentu package pl.jaceklaskowski.exam.scheduler; import java.util.list; import pl.jaceklaskowski.exam.beans.exam; public class ExamSchedulerBean implements ExamScheduler { public List<Exam> getexams() { return...; } } Nie, to nie wszystko... ;-)

Komponent EJB3 - przykład Obowiązkowo określamy typ komponentu package pl.jaceklaskowski.exam.scheduler; import java.util.list; import javax.ejb.stateless; import pl.jaceklaskowski.exam.beans.exam; @Stateless public class ExamSchedulerBean implements ExamScheduler { public List<Exam> getexams() { return...; } }

Pytania? Nie! To jeszcze nie koniec...

Laboratoria - agenda Utworzenie aplikacji przemysłowej z EJB3 Ziarno sterowane komunikatami (MDB) z klientem zdalnym Ziarno MDB Usługa sieciowa JAX-WS jako bezstanowe ziarno sesyjne (SLSB) Wykorzystane oprogramowanie: Eclipse 3.3.1 z wtyczką dla Geronimo NetBeans IDE 6.0

Pytania? Nie! To jeszcze nie koniec...

Java Persistence API 1.0 Java Persistence API interfejs programistyczny do obiektowej obsługi danych składowanych w relacyjnych bazach danych Część Java EE 5 w ramach EJB3 Specyfikacja JPA 1.0 zatwierdzona 2 maja 2006r. Implementacje: Apache OpenJPA TopLink Essentials (TopLink JPA) Hibernate EntityManager (Hibernate JPA)

Fundamenty JPA POJO (ang. Plain-Old Java Object) powrót do korzeni JavaBeans Konfiguracja przez nadpisywanie (ang. configuration by exception) konfiguracja jest wyjątkiem od ogólnie przyjętej reguły Java SE 5 a przede wszystkim adnotacje Wstrzeliwanie zależności (ang. DI dependency injection) alternatywa dla JNDI Plik jar jako format dystrybucji

Rezultat prac nad JPA Intuicyjne tworzenie komponentów biznesowych Bezinwazyjność - realizujemy założenia biznesowe a nie specyfikacji Brak wymagań odnośnie środowiska programistycznego dowolne Java IDE Możliwość uruchomienia komponentów encyjnych w ramach Java SE Uproszczone testowanie poza środowiskiem serwera aplikacyjnego

Nomenklatura JPA Encja obiekt trwały (egzemplarz klasy encji) Klasa encji klasa reprezentująca stan encji Zarządca encji interfejs do zarządzania kontekstem trwałym Fabryka zarządców encji interfejs do tworzenia (aplikacyjnych) zarządców trwałych Kontekst trwały zbiór zarządzanych obiektów trwałych, w którym dla danego identyfikatora trwałego istnieje pojedyńczy egzemplarz encji

Liczność bytów JPA Za Pro EJB 3 Java Persistence API Apress strona 24

EntityManagerFactory API EntityManager createentitymanager() EntityManager createentitymanager(map map) void close() boolean isopen()

Stadia rozwojowe encji Encja nowa (ang. new) Utworzenie egzemplarza klasy encji Brak identyfikatora trwałego Encja nie związana z żadnym kontekstem trwałym Encja zarządzana (ang. managed) Przypisany trwały identyfikator Encja związana z kontekstem trwałym Zmiany automatycznie zapisywane w bazie danych

Stadia rozwojowe encji kont. Encja odłączona (ang. detached) Encja posiadająca identyfikator trwały Nie związana z kontekstem trwałym Zmiany nie mają odzwierciedlenia w bazie danych Zwykły egzemplarz klasy encji Encja usunięta (ang. Removed) Encja zarządzana oczekująca trwałego usunięcia Nie istnieje API do rozpoznania stadium rozwojowego encji, ale...

EntityManager API void clear() Czyści kontekst trwały Wszystkie zarządzane encje przechodzą w stan odłączony <T> T merge(t entity) Synchronizuje stan encji z kontekstem trwałym Przejście ze stanu odłączonego w stan zarządzany UWAGA: Jedynie zwrócona encja jest zarządzana void persist(object entity) Utrwalenie egzemplarza encji Encja w stanie zarządzanym

EntityManager API kont. void refresh(object entity) Odświeża stan encji danymi z bazy danych Nadpisuje zmiany stanu encji void remove(object entity) Usuwa encję

Pytania? Nie! To jeszcze nie koniec...

Środowisko rozpoznawania JPA Korzysta z Apache Maven 2.0.8 Tworzenie artefaktów projektowych w wybranym IDE (obecnie Eclipse IDE 3.3) Możliwość wyboru dostawcy JPA oraz bazy danych domyślnie Apache OpenJPA z Apache Derby Uruchomienie testów z poziomu IDE lub linii poleceń

Przykład #1 cykl rozwojowy encji Przykład demonstruje użycie interfejsu EntityManager Klasa LifecycleTest mvn -Dtest=LifecycleTest clean test

Konfiguracja JPA META-INF/persistence.xml plik konfiguracyjny JPA (deskryptor XML dla JPA) Opisuje konfigurację zarządcy encji Obowiązkowy atrybut: nazwa jednostki trwałej Dostawca JPA Obsługa transakcji Klasy encji Właściwości konfiguracyjne dostawcy JPA Może istnieć wiele definicji jednostek trwałych

(Aplikacyjna) konfiguracja JPA <?xml version="1.0" encoding="utf-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ ns/persistence/persistence_1_0.xsd"> <persistence-unit name="testpu" transaction-type="resource_local"> <provider>org.apache.openjpa.persistence.persistenceproviderimpl</provider> <class>pl.jaceklaskowski.jpa.entity.osoba</class> <class>pl.jaceklaskowski.jpa.entity.projekt</class> <class>pl.jaceklaskowski.jpa.entity.pracownikspecjalny</class> <class>pl.jaceklaskowski.jpa.entity.a</class> <exclude-unlisted-classes>true</exclude-unlisted-classes> <properties> <property name="openjpa.connectiondrivername" value="org.apache.derby.jdbc.embeddeddriver" /> <property name="openjpa.connectionurl" value="jdbc:derby:target/derbydb;create=true" /> <property name="openjpa.connectionusername" value="app" /> <property name="openjpa.connectionpassword" value="app" /> <property name="openjpa.jdbc.dbdictionary" value="derby" /> <property name="openjpa.jdbc.synchronizemappings" value="buildschema(schemaaction='add,deletetablecontents')" /> <property name="openjpa.log" value="defaultlevel=trace,sql=trace" /> <!-- Breaks maven-surefire-plugin with TestNG --> <property name="openjpa.querycompilationcache" value="false" /> </properties> </persistence-unit> </persistence>

(Serwerowa) konfiguracja JPA <?xml version="1.0" encoding="utf-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ ns/persistence/persistence_1_0.xsd"> <persistence-unit name="testyejb3encjepu"> <jta-data-source>jdbc/testyejb3postgres</jta-data-source> <properties> <property name="toplink.ddl-generation" value="drop-and-create-tables" /> <property name="toplink.logging.level" value="info" /> </properties> </persistence-unit> </persistence>

Przykład #2 JPA w Java SE Przykład demonstruje konstrukcję samodzielnej aplikacji korzystającej z JPA (w trybie poza kontenerem) Na podstawie artykułów w moim Wiki OpenJPA jako dostawca JPA w samodzielnej aplikacji Java Persistence API w samodzielnej aplikacji Hibernate jako dostawca JPA w samodzielnej aplikacji

Przykład #3 JPA w Java EE Przykład demonstruje prostotę tworzenia aplikacji korporacyjnej korzystającej z usług serwera aplikacyjnego Java EE 5 Zlecenie obsługi elementów składowych kontenerowi (serwerowi) Ziarno bezstanowe EJB z JPA Na podstawie artykułu w moim Wiki Aplikacja korporacyjna z JPA w trybie JTA z GlassFish i PostgreSQL

Pytania? Nie! To jeszcze nie koniec...

Tworzenie encji Zbudowanie klasy reprezentującej byt w domenie biznesowej (POJO) Uaktywnienie klasy jako klasy encji za pomocą adnotacji Adnotacje na polach Adnotacje na metodach odczytujących (ang. setter) Definicja jednostki trwałej (persistence.xml) Opcjonalna definicja mapowania Adnotacje Plik META-INF/orm.xml

Podstawowe adnotacje JPA @Entity oznaczenie klasy jako klasy encji @Id oznaczenie pola jako typu identyfikatora trwałego

Encja Prelegent package pl.jaceklaskowski.ejb3.testy.encje; import java.io.serializable; import javax.persistence.entity; import javax.persistence.id; @Entity public class Prelegent implements Serializable { private static final long serialversionuid = 1L; @Id private long id; private String imie; private String nazwisko; public Prelegent() { } public Prelegent(String imie, String nazwisko) { this.imie = imie; this.nazwisko = nazwisko; } public long getid() { return id; } // Zauważ zmianę widoczności metody, aby wybrani mogli z niej skorzystać void setid(long id) { this.id = id; } } // metody modyfikujace i odczytujące

Mapujące adnotacje JPA @Table tabela podstawowa dla encji @Column definicja charakterystyki kolumny @GeneratedValue generator AUTO, IDENTITY, SEQUENCE, TABLE strategy domyślnie AUTO @OneToOne, @OneToMany, @ManyToMany, @ManyToOne @Basic z atrybutem fetch (domyślnie EAGER)

Konfiguracja mapowania JPA Plik META-INF/orm.xml Ważniejszy niż konfiguracja mapowania za pomocą adnotacji Każdej adnotacji odpowiada element deskryptora mapowania

Przykładowy orm.xml <entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm" version="1.0"> <entity class="pl.jaceklaskowski.jpa.entity.a"> <attributes> <basic name="str2"> <column name="col2" length="4" /> </basic> </attributes> </entity> </entity-mappings>

Typy zarządców encji Podział ze względu na zarządzanie nimi Aplikacyjny zarządca encji Serwerowy zarządca encji Podział ze względu na transakcje Zarządca encji JTA Zarządca encji lokalny dla zasobu

Pytania? Nie! To jeszcze nie koniec...

Java Persistence QL Java Persistence Query Language (JPQL) język zapytań JPA łudząco podobny do SQL Obowiązkowe klauzule SELECT... FROM... EntityManager.createN...Query() N... = Named lub Native Zapytania nazwane Zapytania natywne @NamedQuery lub named-query @NamedNativeQuery lub named-native-query

Query API int executeupdate() List getresultlist() Object getsingleresult() Query setparameter() Parametry w zapytaniu poprzedzone dwukropkiem Parametry metody setparameter już bez niego

Pytania? Nie! To jeszcze nie koniec, ale już blisko...

Lektura do poduszki Specyfikacja JPA http://jcp.org/aboutjava/communityprocess/ final/jsr220/index.html Strona Java Persistence API http://java.sun.com/javaee/ technologies/persistence.jsp Relacje z lektury specyfikacji JPA w Notatniku http://jlaskowski.blogspot.com/search/label/jpa Artykuły o JPA na moim Wiki Aplikacja korporacyjna z JPA w trybie JTA z GlassFish i PostgreSQL Java Persistence API w samodzielnej aplikacji OpenJPA jako dostawca JPA w samodzielnej aplikacji Hibernate jako dostawca JPA w samodzielnej aplikacji

Laboratoria - agenda Utworzenie aplikacji przemysłowej z EJB3 Ziarno sterowane komunikatami (MDB) z klientem zdalnym Ziarno MDB z JPA w trybie JTA Usługa sieciowa JAX-WS jako bezstanowe ziarno sesyjne (SLSB) z JPA Wykorzystane oprogramowanie: Eclipse 3.3.1 z wtyczką dla Geronimo NetBeans IDE 6.0

I to na dziś tyle...pytania? Słucham?