java persistence api part 2 informatics engineering – university of brawijaya eriq muhammad adams...
TRANSCRIPT
![Page 1: Java Persistence API part 2 INFORMATICS ENGINEERING – UNIVERSITY OF BRAWIJAYA Eriq Muhammad Adams J eriq.adams@ub.ac.id](https://reader036.vdocuments.us/reader036/viewer/2022072006/56649d145503460f949e82af/html5/thumbnails/1.jpg)
JEE PROGRAMMINGJava Persistence API part 2
INFO
RM
ATIC
S E
NG
INEER
ING
– U
NIV
ER
SIT
Y O
F B
RA
WIJ
AYA
Eriq Muhammad Adams [email protected]
![Page 2: Java Persistence API part 2 INFORMATICS ENGINEERING – UNIVERSITY OF BRAWIJAYA Eriq Muhammad Adams J eriq.adams@ub.ac.id](https://reader036.vdocuments.us/reader036/viewer/2022072006/56649d145503460f949e82af/html5/thumbnails/2.jpg)
Agenda
JPQL (Java Persistence Query Language)
EAO Pattern Session Façade Pattern
![Page 3: Java Persistence API part 2 INFORMATICS ENGINEERING – UNIVERSITY OF BRAWIJAYA Eriq Muhammad Adams J eriq.adams@ub.ac.id](https://reader036.vdocuments.us/reader036/viewer/2022072006/56649d145503460f949e82af/html5/thumbnails/3.jpg)
JPQL (Java Persistence Query Language)
Dynamic Query with JPQL entityManager.createQuery(”select object o from Inventory o”).getResultList();
Binding parameter : entityManager.createQuery(”select object o from Inventory o where o.year =:year”).setParameter(”year”, year).getResultList();
entityManager.createQuery(”select object o from Inventory o where o.year =?1”).setParameter(0, year).getResultList();
![Page 4: Java Persistence API part 2 INFORMATICS ENGINEERING – UNIVERSITY OF BRAWIJAYA Eriq Muhammad Adams J eriq.adams@ub.ac.id](https://reader036.vdocuments.us/reader036/viewer/2022072006/56649d145503460f949e82af/html5/thumbnails/4.jpg)
JPQL (Java Persistence Query Language) (cont.)
Named Queries@Entity@NamedQueries({ @NamedQuery(name="findAllInventory", queryString="select object(o) from Inventory o"),@NamedQuery(name="findInventoryByYear", queryString="select object(o) from Inventory o where o.year=:year"),@NamedQuery(name="findInventoryByRegion", queryString="select object(o) from Inventory o where o.region=?1 ")})public class Inventory implements Serializable{………
![Page 5: Java Persistence API part 2 INFORMATICS ENGINEERING – UNIVERSITY OF BRAWIJAYA Eriq Muhammad Adams J eriq.adams@ub.ac.id](https://reader036.vdocuments.us/reader036/viewer/2022072006/56649d145503460f949e82af/html5/thumbnails/5.jpg)
JPQL (Java Persistence Query Language) (cont.)
entityManager.createNamedQuery(”findAllInventory”).getResultList();
entityManager.createNamedQuery(”findInventoryByYear”).setParameter(” year”, year).getResultList();
entityManager.createNamedQuery(”findInventoryByRegion”).setParameter(0, region).getResultList();
![Page 6: Java Persistence API part 2 INFORMATICS ENGINEERING – UNIVERSITY OF BRAWIJAYA Eriq Muhammad Adams J eriq.adams@ub.ac.id](https://reader036.vdocuments.us/reader036/viewer/2022072006/56649d145503460f949e82af/html5/thumbnails/6.jpg)
JPQL (Java Persistence Query Language) (cont.)
Bulk Update and Delete Operationpublic int bulkDeleteEmptyInventory() {
return em.createQuery("delete from Inventory o where o.quantity = 0").executeUpdate();
}
![Page 7: Java Persistence API part 2 INFORMATICS ENGINEERING – UNIVERSITY OF BRAWIJAYA Eriq Muhammad Adams J eriq.adams@ub.ac.id](https://reader036.vdocuments.us/reader036/viewer/2022072006/56649d145503460f949e82af/html5/thumbnails/7.jpg)
JPQL (Java Persistence Query Language) (cont.)
Native SQL Query entityManager.createNativeQuery(”select * from inventory”, entity.Inventory.class).getResultList();
entityManager.createNativeQuery(”select * from inventory where year=?”, entity.Inventory.class ).setParameter(0, year).getResultList();
Resultset Mapping @SqlResultSetMapping(name = “InventoryResults", entities = @EntityResult(entityClass = Entity.Inventory.class));
entityManager.createNativeQuery(”select * from inventory”, InventoryResults).getResultList();
![Page 8: Java Persistence API part 2 INFORMATICS ENGINEERING – UNIVERSITY OF BRAWIJAYA Eriq Muhammad Adams J eriq.adams@ub.ac.id](https://reader036.vdocuments.us/reader036/viewer/2022072006/56649d145503460f949e82af/html5/thumbnails/8.jpg)
JPQL (Java Persistence Query Language) (cont.)
Native Named SQL Query@NamedNativeQuery( name = "findInventoryByYear",
query = "SELECT * FROM inventory WHERE year = ?)", resultClass = entity.Inventory.class)
@NamedNativeQuery( name = "findInventoryByYear",
query = "SELECT * FROM inventory WHERE year = ?)", resultSetMapping = "InventoryResults")
entityManager.createNamedQuery(”findInventoryByYear”).setParamater(0,year).getResultList();
![Page 9: Java Persistence API part 2 INFORMATICS ENGINEERING – UNIVERSITY OF BRAWIJAYA Eriq Muhammad Adams J eriq.adams@ub.ac.id](https://reader036.vdocuments.us/reader036/viewer/2022072006/56649d145503460f949e82af/html5/thumbnails/9.jpg)
EAO Pattern
Stand for Entity Access Object Pattern
Separate or decouple data access with any business logic code.
It’s useful and widely used pattern because its reduce maintenance problem.
![Page 10: Java Persistence API part 2 INFORMATICS ENGINEERING – UNIVERSITY OF BRAWIJAYA Eriq Muhammad Adams J eriq.adams@ub.ac.id](https://reader036.vdocuments.us/reader036/viewer/2022072006/56649d145503460f949e82af/html5/thumbnails/10.jpg)
EAO Pattern (cont.)
Illustration Sample
Fig. taken from EJB 3 in Action, Manning
![Page 11: Java Persistence API part 2 INFORMATICS ENGINEERING – UNIVERSITY OF BRAWIJAYA Eriq Muhammad Adams J eriq.adams@ub.ac.id](https://reader036.vdocuments.us/reader036/viewer/2022072006/56649d145503460f949e82af/html5/thumbnails/11.jpg)
Session Façade Pattern The primary reasons the Session
Façade pattern was invented was to reduce the number of remote calls for previous EJB incarnations, and this still holds true for EJB 3.
![Page 12: Java Persistence API part 2 INFORMATICS ENGINEERING – UNIVERSITY OF BRAWIJAYA Eriq Muhammad Adams J eriq.adams@ub.ac.id](https://reader036.vdocuments.us/reader036/viewer/2022072006/56649d145503460f949e82af/html5/thumbnails/12.jpg)
Session Façade Pattern (cont.) Illustration sample
Fig. taken from EJB 3 in Action, Manning
![Page 13: Java Persistence API part 2 INFORMATICS ENGINEERING – UNIVERSITY OF BRAWIJAYA Eriq Muhammad Adams J eriq.adams@ub.ac.id](https://reader036.vdocuments.us/reader036/viewer/2022072006/56649d145503460f949e82af/html5/thumbnails/13.jpg)
Demo
JPQL Demo in JPQLDemo.zip EAO Pattern and Session Façade
Pattern Demo in EAOSessionFacade.zip
![Page 14: Java Persistence API part 2 INFORMATICS ENGINEERING – UNIVERSITY OF BRAWIJAYA Eriq Muhammad Adams J eriq.adams@ub.ac.id](https://reader036.vdocuments.us/reader036/viewer/2022072006/56649d145503460f949e82af/html5/thumbnails/14.jpg)
References
EJB 3 in Action, Manning Beginning EJB 3 Application
Development, Apress