Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
1
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - CVIČENÍ Zbyněk Šlajchrt http://java.vse.cz/4it447/HomePage Část 6.
2
Program Diskuse nad domácím úkolem Aplikace Fotoalbum Adaptace na JPA Práce se stavovým EJB On-line operace nad objektem fotografie Programovací vzor Gateway využívající stavový EJB 2
3
Proměna Photo v JPA entitu Anotujte třídu Photo anotací @Entity javax.persistence.Entity Přidejte privátní atribut třídy id typu int Unikátní klíč záznamu v databázi Vytvořte getter a setter Getter anotujte @Id a @GeneratedValue @Id indikuje unikátní klíč @GeneratedValue instruuje JPA ke generování hodnoty 3
4
Proměna Photo v JPA entitu Getter getImage anotujte @Lob @Lob označuje sloupec s binárním či textovým obsahem Entita Photo bude atributem stavového EJB, proto musí být serializovatelná implements Serializable 4
5
Úprava DAO Rozhraní AlbumDAO Změňte návratový typ metody updatePhoto na Photo Třída AlbumDAOBean Nahraďte původní zdrojový kód za kód z poznámek 5
6
Album DAO 6
7
Soubor persistence.xml V adresáři ejb/src/main/resources/META-INF vytvořte soubor persistence.xml Slouží ke konfiguraci JPA Použijeme specifické vlastnosti implementace EclipseLink nastavení úrovně logování instrukce k automatickému vytváření db tabulek 7
8
Soubor orm.xml V adresáři ejb/src/main/resources/META-INF vytvořte soubor orm.xml Konfigurace mapování mezi entitami a tabulkami Lze v něm předdefinovat dotazy 8
9
Definice datového zdroje Provádí se v administrátorské konzoli Otevřete panel Resources/JDBC/JDBC Resources Vytvořte nový prostředek Do políčka JNDI Name zadejte název datového zdroje, jak je uvedeno v persistence.xml jdbc/myDS Položku Pool Name nastavte na DerbyPool Poznámka pro ty, co neprogramují v NetBeans Je třeba nainstalovat databázi (rozbalení ZIPu) http://db.apache.org/derby/derby_downloads.html spuštění: bin/startNetworkServer.bat 9
10
Build&Deploy 10
11
PhotoGateway Stavový EJB Zprostředkovává klientovi objekt fotografie Entitu (objekt) dostane klient "živou", tj. "managed" Výhody: úpravy se provádějí v paměti voláním metod na objektu fotografie při ukládání není třeba provádět náročný "merge", jelikož entita je stále v JPA keši tzv. lean design – neobsahuje nic nadbytečného, štíhlý 11
12
Aplikační vrstva 12
13
PhotoGateway – zdrojový kód 13
14
PhotoGateway - poznámky Stavový bean, jehož stav je odkaz na předaný objekt fotografie Je použit rozšířený perzistentní kontext Život objektů v kontextu je vymezen životem beanu Nekončí s každým voláním metody Kromě metody save jsou ostatní metody volány mimo transakci (jsou read-only) @TransactionAttribute(value = TransactionAttributeType.NOT_SUPPORTED) Volání metody save zahájí novou transakci. Při jejím ukončení dojde k uložení (commit) perzist. kontextu. 14
15
Prezentační vrstva 15
16
PhotoDetailPageBean 16 Patří do webového modulu
17
AlbumPageBean 17 Patří do webového modulu
18
Úprava AlbumServlet AlbumServlet bude pracovat se stavovými beany, které není možné injektovat do atributu servletu použijeme vyhledání (lookup) v ENC (JNDI) kvůli tomu je zapotřebí konfigurace ENC, zde pomocí anotací AlbumServlet bude coby kontroler pracovat s modelem v podobě AlbumPageBean případně s odkazovaným PhotoPageBean AlbumPageBean je kořen modelu a je uložen v session 18
19
Životní cyklus AlbumPageBean Metody v AlbumServlet pro práci s AlbumPageBean 19
20
Úprava performAction 20
21
Akce 'detail' Větev v performAction 21
22
Stránka detail.jsp Zobrazuje fotografii spolu s názvem a popisem V spodní polovině stránky jsou k dispozici akce pro změnu velikosti fotky rotaci (neimplementováno) uložení rozpracovaného stavu fotky a návrat obnovení fotografie z databáze zrušení úprav a návrat 22
23
Diagram stránek 23
24
Úprava stránky upload.jsp Náhrada stávající tagu jsp:useBean za Nastavení hlavičky pro řízení keše prohlížeče Úprava cyklu c:forEach 24
25
Úprava PhotoServlet V případě, že není zadán název fotky v URL, pokusí se nalézt kontextovou fotku AlbumPageBean.getPhotoDetail().getPhoto() 25
26
Akce v detail.jsp Pro každou akci přibude jeden 'if' v hlavním rozvětvení v metodě AlbumServlet.performAction Každá akce je podchycena odpovídající 'do' metodou v servletu Metoda doResize pracuje s objektem fotky Metody doCancel, doSave, doRefesh pracují s gateway Metody doCancel a doSave uzavírají model detailu fotky getAlbumPageBean(request).setDetailBean(null) 26
27
Domácí úkol Přidejte do entity Photo atribut modified, který bude udržovat datum a čas poslední úpravy fotografie. Dále na entitě Photo vytvořte posluchačskou metodu, která bude nastavovat atribut Photo na aktuální čas při úpravách fotografie. Rozšiřte HTML tabulku se seznamem fotografií o sloupec, který bude zobrazovat datum poslední úpravy. Do detailu fotografie přidejte pole, které bude také zobrazovat hodnostu tohoto atributu. 27
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.