1 / 27

VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - CVIČENÍ

VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - CVIČENÍ. Zbyněk Šlajchrt http://java.vse.cz/4it447/HomePage. Část 6. Program. Diskuse nad domácím úkolem Aplikace Fotoalbum Adaptace na JPA Práce se stavovým EJB On-line operace nad objektem fotografie

Download Presentation

VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - CVIČENÍ

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. 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

  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

  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

  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

  6. Album DAO

  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

  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

  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 • <jta-data-source>jdbc/myDS</jta-data-source> • 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

  10. Build&Deploy

  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ý

  12. Aplikační vrstva

  13. PhotoGateway – zdrojový kód

  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.

  15. Prezentační vrstva

  16. PhotoDetailPageBean Patří do webového modulu

  17. AlbumPageBean 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

  19. Životní cyklus AlbumPageBean • Metody v AlbumServlet pro práci s AlbumPageBean

  20. Úprava performAction

  21. Akce 'detail' Větev v performAction

  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

  23. Diagram stránek

  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

  25. Úprava PhotoServlet • V případě, že není zadán název fotky v URL, pokusí se nalézt kontextovou fotku • AlbumPageBean.getPhotoDetail().getPhoto()

  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)

  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.

More Related