V voj podnikov ch aplikac na platform java cvi en
Download
1 / 27

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


  • 84 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - CVIČENÍ' - idona-anderson


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
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
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


Prom na photo v jpa entitu
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


Prom na photo v jpa entitu1
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


Prava dao
Ú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



Soubor persistence xml
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


Soubor orm xml
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


Definice datov ho zdroje
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



Photogateway
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ý




Photogateway pozn mky
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.



  • Photodetailpagebean
    PhotoDetailPageBean

    Patří do webového modulu


    Albumpagebean
    AlbumPageBean

    Patří do webového modulu


    Prava albumservlet
    Ú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


  • Ivotn cyklus albumpagebean
    Životní cyklus AlbumPageBean

    • Metody v AlbumServlet pro práci s AlbumPageBean



    Akce detail
    Akce 'detail'

    Větev v performAction


    Str nka detail jsp
    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



    Prava str nky upload jsp
    Ú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


    Prava photoservlet
    Úprava PhotoServlet

    • V případě, že není zadán název fotky v URL, pokusí se nalézt kontextovou fotku

      • AlbumPageBean.getPhotoDetail().getPhoto()


    Akce v detail jsp
    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)


    Dom c kol
    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.


    ad