Date post: | 31-Dec-2015 |
Category: |
Documents |
Upload: | idona-anderson |
View: | 42 times |
Download: | 3 times |
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
Programovací vzor Gateway využívající stavový EJB
2
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
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
Ú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
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
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
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
9
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
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
Ú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
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
Ú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
Úprava PhotoServlet
V případě, že není zadán název fotky v URL, pokusí se nalézt kontextovou fotku AlbumPageBean.getPhotoDetail().getPhoto(
)
25
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
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