Adatkezelés. 11. előadás (Entity Beans)



Hasonló dokumentumok
Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Enterprise JavaBeans fejlesztési példa

Enterprise JavaBeans fejlesztési példa

5. rész: A Java EE és az Enterprise Bean réteg. Bakay Árpád dr. NETvisor kft (30)

Stateless Session Bean

6. rész: EJB-k tervezése és implementálása

Tartalom. Az EJB 2.1 problémái Az EJB 3 megoldásai

S04-2 Elosztott alkalmazások készítése

Biztonság java web alkalmazásokban

Segédanyag: Java alkalmazások gyakorlat

Előszó. Bevezetés. Java objektumok leképzése relációs adatbázisokra OJB-vel Viczián István Viczián István

Enterprise Java Beans. EJB - Általános bevezető

JEE tutorial. Zsíros Levente, 2012

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

Hello, EJB! Egy egyszerű példa

Segédanyag: Java alkalmazások gyakorlat

ELOSZTOTT ALKALMAZÁSOK TERHELÉSTESZTELÉSE ÉS MENEDZSMENTJE

Komponens modellek. 3. Előadás (első fele)

Üdvözli Önöket A PGY3 tantárgy! Bakay Árpád dr. NETvisor kft (30) arpad.bakay@netvisor.hu

DIPLOMAMUNKA. Dévai Vince

JAVA PROGRAMOZÁS 3.ELŐADÁS

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Programozási nyelvek Java

A WEB programozása - JSP1 dr.gál Tibor őszi félév

Java. Java Message Service. ANTAL Margit. JMS API technológia. ANTAL Margit. Sapientia - EMTE

Adatbázisok webalkalmazásokban

A Java EE 5 plattform

JNDI - alapok. Java Naming and Directory Interface

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Szoftver Tervezési Dokumentáció. Nguyen Thai Binh

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

OOP: Java 8.Gy: Abstract osztályok, interfészek

Java RMI Áttekintés. A Java RMI. A Java RMI architektúrája. Ficsor Lajos. Általános Infromatikai Tanszék Miskolci Egyetem 1.

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

ZH mintapélda. Feladat. Felület

A Java Persistence API PersistenceAPI / 3

Java RMI Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. javarmi / 1

RIA Rich Internet Application

Szervlet-JSP együttműködés












Magas szintű programozási nyelvek 2 Előadás jegyzet

R I Szer e i r alizáció.

Oracle BI Administration Tool. Repository felépítése

PHP5 Új generáció (2. rész)

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Java Remote Method Invocation API

Osztott rendszerek, Java EE. Általános bevezető

Adatbázisok és adattárházak az információs rendszerek adatkezelői

Objektumorientált programozás Java-ban

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Programozási nyelvek Java

Debreceni Egyetem Informatikai Kar JAVA ENTERPRISE COMPUTING

8. rész: Implementáció JDeveloperben

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar


MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet

Web-fejlesztés NGM_IN002_1

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

libgdx alapok, első alkalmazás

eseményvezérelt megoldások Vizuális programozás 5. előadás

Bevezetés J2EE komponensek Java2EE API-k Web alkalmazások Dokumentáció Fejlesztői környezet. JAVA technológiák - bevezető

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

Programozás II. labor

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

Junior Java Képzés. Tematika

JDBC - adatbáziskezelés

Szoftveripar és üzleti modellek

Java Web technológiák

OBJEKTUMORIENTÁLT TERVEZÉS ESETTANULMÁNYOK. 2.1 A feladat

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

C# osztályok. Krizsán Zoltán

Osztott alkalmazások fejlesztési technológiái Áttekintés

.NET Microsoft.Net Framework

Témák. JDBC Adatbázisok JDBC használatának lépései Tranzakciók Adatbázis tervezés EK diagram

Reader /Writer InputStreamReader, OutputStreamWriter

Adatközpont-központ: Storage Made Easy Regisztráció

EJB - Perzisztencia. EntityManager

Segédanyag: Java alkalmazások gyakorlat

Programozási nyelvek Java

Eddig még nem használt vezérlőket is megismerünk: PlaceHolder, RadioButtonList.

Collections. Összetett adatstruktúrák

Párhuzamos és Elosztott Rendszerek II

Programozás II gyakorlat. 4. Öröklődés

Szoftverarchitektúrák. 12. Sorozat portál (követelmény specifikáció)

MVC desktop alkalmazás esetén. MVC Model-View-Controller. eredete: Model View Controller (MVC) elv Java EE Java alapú Web alkalmazások

Objektumorientált programozás C# nyelven

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Átírás:

Adatkezelés 11. előadás (Entity Beans)

Java EE konténerek (ismétlés) Szerver oldali Szerver (tartalmazza a másik kettőt) EJB konténer Web konténer Kliens oldali Alkalmazás konténer Böngésző java pluginje

Enterprise Java Beans (ismétlés) Implementálnia kell bizonyos interfészeket Meg kell felelnie egyes követelményeknek A kliens sosem fér hozzá közvetlenül A konténer menedzseli A konténer elérhetővé teszi JNDI-n keresztül

Az EJB fajtái (ismétlés) Szakasz (Session) Entitás (Entity) Bean által menedzselt Konténer által menedzselt Üzenetvezérelt (Message-driven)

Interfészek (ismétlés) Szerep Home interfész (életciklus) Interfész (üzleti logika) Működés Lokális Távoli A kliens ugyanabban a JVM-ben fut Paraméterátadás referencia szerint Távoli metódushívást használ Paraméterátadás érték szerint

EJB konténer működése (ismétlés) Interfészek implementációját legenerálja a konténer A home interfészhez hozzáfér a kliens A home interfésztől referenciát kap az EJB interfészhez create() vs. ejbcreate() A kliens meghívja az EJB interfész metódusát Az implementáció meghívja az EJB vonatkozó metódusát metódusnév() vs. EjbMetódusNév()

A Home interfész használat (ismétlés) Távoli InitialContext ic= new InitialContext(); Object oref= ic.lookup( "java:comp/env/ejb/myejbbean" ); MyEJBRemoteHome MyEJBHome= (MyEJBRemoteHome) PortableRemoteObject.narrow( oref,myejbremotehome.class ); Lokális InitialContext ic= new InitialContext(); MyEJBLocalHome MyEJBHome= (MyEJBLocalHome) ic.lookup( "java:comp/env/ejb/myejbbean" );

EJB konténer működése (ismétlés) Interfészek implementációját legenerálja a konténer A home interfészhez hozzáfér a kliens A home interfésztől referenciát kap az EJB interfészhez create() vs. ejbcreate() A kliens meghívja az EJB interfész metódusát Az implementáció meghívja az EJB vonatkozó metódusát metódusnév() vs. EjbMetódusNév()

Stateless Session Bean (ismétlés)

Stateful Session Bean (ismétlés)

Session Bean interfész (ismétlés) package javax.ejb; import java.rmi.remoteexception; public interface SessionBean extends EnterpriseBean { } public void setsessioncontext(sessioncontext ctx) throws EJBException, RemoteException; public void ejbremove() throws EJBException, RemoteException; public void ejbactivate() throws EJBException, RemoteException; public void ejbpassivate() throws EJBException, RemoteException;

Stateless Session Bean Nem létezik kész Class.newInstance() setsessioncontext() ejbcreate() Kész nem létezik (ejbremove()) Állapot Kliens create() remove()

Stateless Session Bean (tulajdonságok) Egyetlen ejbcreate() üres paraméterlistával Minden kliensre vonatkozó adatok Hatékony pooling

Stateful Session Bean Nem létezik kész Class.newInstance() setsessioncontext() ejbcreate() Kész nem létezik (ejbremove()) Kész passzív (ejbpassivate()) Passzív kész (ejbactivate())

Serialization java.io.serializable Mentés háttértárolóra Object Pooling Nem szerializálható például Szálak Adatbáziskapcsolatok Egyéb erőforrások

Object Pooling ejbpassivate Nem szerializálható erőforrások felszabadítása ejbactivate Nem szerializálható erőforrások visszaállítása

Stateful Session Bean (tulajdonságok) Több ejbcreate() is lehet, az üres paraméterlistás kötelez Egyetlen kliensre vonatkozó adatok Skálázhatóság az ejbactivate() és az ejbpassivate() segítségével

Entity Bean metódusok create()/ejbcreate() remove()/ejbremove() findbyprimarykey()/ejbfindbyprimarykey() findvalami()/ejbfindvalami() homevalami()/ejbhomevalami() A Home interfészben kell deklarálni

Elsődleges kulcs Csak objektum lehet Tulajdonságai Publikus Van paraméter nélküli publikus konstruktora Minden mezője publikus A változónevek a konténer által menedzselt mezők egy részhalmaza Felül kell definiálnia a hashcode() és az equals() metódusokat

Konténer által menedzselt Absztrakt osztály Adatbázishozzáférést generált kód végzi Az állapotot virtuális perzisztens mezők tárolják A findbyprimarykey() metódust a konténer kezeli A többi finder metódust is a konténer generálja, EJB QL lekérdezésekkel kell megadni őket Az ejbcreate() visszatérési értéke null

Bean által menedzselt Nem absztrakt osztály A fejlesztő kódolja Az állapotot példánymezők tárolják A findbyprimarykey() metódust a fejlesztő kódolja A többi finder metódust is a fejlesztő kódolja Az ejbcreate() visszatérési értéke az elsődleges kulcs

EntityBean package javax.ejb; import java.rmi.remoteexception; public interface EntityBean extends EnterpriseBean { public void setentitycontext(entitycontext ctx) throws EJBException, RemoteException; public void unsetentitycontext() throws EJBException, RemoteException; public void ejbremove() throws RemoveException, EJBException, RemoteException; public void ejbactivate() throws EJBException, RemoteException; public void ejbpassivate() throws EJBException, RemoteException; public void ejbload() throws EJBException, RemoteException; public void ejbstore() throws EJBException, RemoteException; }

EntityBean életciklusa

EntityBean életciklusa Nem létezik pool Class.newInstance() SetEntityContext() Pool kész create() ejbcreate() ejbpostcreate() Pool kész (activate()/ejbactivate()) Kész pool (remove()/ejbremove()) Kész pool (passivate()/ejbpassivate()) Pool nem létezik (unsetentitycontext())

EntityBean (metódusok) A poolban meghívható Home metódusok Egyéb finder metódusok ejbload()/ejbstore Rollback ejbcreate()/ejbpostcreate() Bean Managed eset

Tranzakciók Piszkos olvasás - másik tranzakciónak nem kommitolt változásai vannak Nem megismételhető olvasás a tranzakció közben kétszer olvas be egy sort és a két beolvasás között az érték megváltozik Fantom olvasás két azonos lekérdezés különböző eredményt ad

Tranzakciók izolációs szint TRANSACTION_NONE TRANSACTION_READ_COMMITTED TRANSACTION_READ_UNCOMMITTED TRANSACTION_REPEATABLE_READ TRANSACTION_SERIALIZABLE

EJB Tranzakciókezelés Bean által kezelt Session Message-driven Konténer által kezelt Session Message-driven Entity

Bean által kezelt javax.transaction.usertransaction EJBContext UserTransaction begin() commit() rollback() JDBC tranzakciókezelő használata tilos

Konténer által kezelt <transaction-type>container</transaction-type> <trans-attribute></trans-attribute> Mandatory Never NotSupported Required RequiresNew Supports Rendszerkivételek Alkalmazásszintű kivételek EJBContext.setRollbackOnly()

Beadandó feladat Péntek 23:00 után lesz fent a honlapon http://www.inf.unideb.hu/~follathj Határidő csütörtök éjfél Beadandó feladat akkor is van, ha valamelyik óra elmarad Határidő ilyen esetben is változatlan A megoldások beküldése degi.adatkezeles@gmail.com címre Témamegjelölés a neptun kód