1 / 22

Java web programozás

Java web programozás. 4. Tartalom. Enterprise JavaBeans (folyt.) Entity Bean-ek JPA JTA Persistence Unit EJB QL Session Bean-ek Message Driven Bean-ek, JMS. JPA. Java Persistence API (JSR-220) Biztosítja a „kapcsolatot” az adatbázis és az alkalmazás között.

Download Presentation

Java web programozás

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java web programozás 4.

  2. Tartalom • Enterprise JavaBeans (folyt.) • Entity Bean-ek • JPA • JTA • Persistence Unit • EJB QL • Session Bean-ek • Message Driven Bean-ek, JMS

  3. JPA • Java Persistence API (JSR-220) • Biztosítja a „kapcsolatot” az adatbázis és az alkalmazás között. • Szabványos Objektum-Relációs (O-R) leképezés • Saját lekérdező („query”) nyelv (EJB QL) • Perzisztencia implementációk („JPA Provider”) • TopLink (Oracle) • Hibernate (www.hibernate.org)

  4. JTA • Java Transaction API • Tranzakciós alapfogalmak (ACID): • Atomicitás: az összetartozó adatbázis műveletek közül vagy mindegyik sikeresen lefut, vagy egyik sem. • Konzisztencia: az adatbázis konzisztens állapotban marad. • Izoláció: a konkurens kliensek nem látják egy másik kliens által még be nem fejezett tranzakció hatásait. • Tartósság: egy sikeresen lefutott tranzakció hatásai még külső hiba (hardver, hálózati) esetén sem vesznek el.

  5. JTA • Izolációs szintek: • Read Uncomitted: a tranzakció még jóvá nem hagyott hatásai mindenki számára láthatóak. • Read Comitted: Csak a jóváhagyott módosítások láthatóak. • Repeatable Read: garantálja hogy egy tranzakción belüli sor, többszöri olvasásra sem változik meg. • Serializable: A konkurens tranzakciók hatása sorosítva fut le. • Alapértelmezett izolációs szint • Az adatbázis beállításától függ. • Izolációs szint betartása • Ún. „zárak” (lock) segítségével. (pl. rekord, ill. tábla szintű)

  6. Persistence Unit • Az Entity manager által kezelt Entity Bean-ek halmaza. • A konfiguráció és egyébb információk a „persistence.xml” fájlban. • Egy Java EE projektben, több Persistence Unit is lehet. • A PU-khoz, egy „Data Source” is tartozik amely az adatbázishoz való kapcsolatot hordozza.

  7. Persistence Context • A „perzisztencia provider” (TopLink) által kezelt entitások halmaza. • Ez a kapcsolat a memóriában lévő entitások, és az adatbázis között. • Használata a session bean-ben: @PersistenceContext private EntityManager em;

  8. Entity Bean • Egy „üzleti objektum”. • Az adatbázistábla a memóriába leképzett egy sora. • Egyszerű Java osztályok. (POJO) • Lekérdezések az EJB QL nyelvvel. • Kezelésük, az „Entity Manager” API-val. • Az osztály, az @Entity annotációval van jelölve. • Van elsődleges kulcsa: @Id annotáció, @EmbeddedId • Az Entitások állapota (a változók jelölései) • @Basic: Egyszerű adattípusok • @Embedded: beágyazott objektum (pl. egy másik osztály) • Az entitások állapota perzisztens, kivéve a @Transient annotációval ellátottakat!

  9. Entitás elsődleges kulcsa • Minden entitásnak van, amely megfelel az adatbázisban lévő elsődleges kulcsnak! • @Id annotáció: egy darab mező esetén. • @GeneratedValues: az ID automatikus generálása. • Az ID beállítása: • Sequence: Az adatbázis által kezelt számláló, amelyet a @SequenceGenerator annotációban kell megadnunk. • Identity: Az adatbázistábla, egy autoinkrementálódó oszlopa lesz az elsődleges kulcs.

  10. Gyak: Egy példa entitás

  11. O-R leképezés

  12. Entity Manager API • Az entitások életciklusát és a persistence context-et kezeli. • Entitás életciklus műveletek: • new(): új entitás jön létre amely még nem perzisztens. • persist(): az entitás perzisztens állapotba kerül. Az adatbázis kezelő tranzakciójának a commit-jával kerül beírásra. • remove(): törli a perzisztens entitást. Véglegesítés: commit-kor • refresh(): Az entitás állapota kiolvasódik az adatbázisból. • fluss(): Az entitás állapota beíródik az adatbázisba. • merge(): Entitás módosítása.

  13. Entitások életciklusa

  14. Entitások közötti kapcsolat • Egy-egy kapcsolat • A @OneToOne annotációval. • Egy-több kapcsolat • A @OneToMany és a @ManyToOne annotációkkal. • Kétirányú kapcsolat (egy-több): • Tulajdonos oldal: a külső kulcs • Inverz oldal: mapped-by annotáció

  15. Egy-több kapcsolat

  16. Entitások közötti kapcsolat • Több-több kapcsolat • A @ManyToMany annotációval. • A kapcsolótábla (a kulcsok), egy beágyazott osztály lesz.

  17. Több-több kapcsolat

  18. EJB QL • A query-k típusai • Statikus query: @NamedQuery segítségével deklarálható. • Dinamikus query: az SQL stringet futásidőben hozzuk létre. • Query használata • createNamedQuery(„”): statikus query használata • createQuery(„”): dinamikus query készítése. • createNativeQuery(„”): adatbázis-szerver specifikuk SQL lekérdezés összeállítása.

  19. EJB QL • Minden rekord • SELECT p FROM People p • Feltétel (paraméter) megadása • SELECT p FROM People p WHERE p.name = :name • Rendezés • SELECT p FROM People p ORDER BY p.name • Aggregálás • SELECT count(*) FROM People p • LIKE operátor • SELECT p FROM People p WHERE p.name LIKE ‘B%’

  20. Session Bean • Az üzleti folyamatokat megvalósító szerver oldali komponens • Session Bean típusok • Állapot mentes (@Stateless): • Nem tárol állapotot • Állapottal rendelkező (@Stateful): • Pl. on-line bevásárló kocsi • A kliens végig ugyanazzal a bean-el kommunikál. • Állapot tárolására alkalmas • Message Driven Bean • Aszinkron üzenetkezelés

  21. példa Session Bean

  22. Session Bean kliense • Egy servlet

More Related