Top Banner
Java Persistence API part.2 Eriq Muhammad Adams [email protected] | http://eriq.lecture.ub.ac
13

Java Persistence API part.2 Eriq Muhammad Adams J [email protected]@ub.ac.id | ://eriq.lecture.ub.ac.id.

Dec 30, 2015

Download

Documents

Everett Tate
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Java Persistence API part.2 Eriq Muhammad Adams J eriq.adams@ub.ac.ideriq.adams@ub.ac.id | ://eriq.lecture.ub.ac.id.

Java Persistence API part.2

Eriq Muhammad Adams [email protected] | http://eriq.lecture.ub.ac.id

Page 2: Java Persistence API part.2 Eriq Muhammad Adams J eriq.adams@ub.ac.ideriq.adams@ub.ac.id | ://eriq.lecture.ub.ac.id.

*JPQL (Java Persistence Query Language)

*DAO Pattern

*Façade Pattern

Page 3: Java Persistence API part.2 Eriq Muhammad Adams J eriq.adams@ub.ac.ideriq.adams@ub.ac.id | ://eriq.lecture.ub.ac.id.

*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 Eriq Muhammad Adams J eriq.adams@ub.ac.ideriq.adams@ub.ac.id | ://eriq.lecture.ub.ac.id.

*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 Eriq Muhammad Adams J eriq.adams@ub.ac.ideriq.adams@ub.ac.id | ://eriq.lecture.ub.ac.id.

*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 Eriq Muhammad Adams J eriq.adams@ub.ac.ideriq.adams@ub.ac.id | ://eriq.lecture.ub.ac.id.

*Bulk Update and Delete Operation

public int bulkDeleteEmptyInventory() {

return em.createQuery("delete from Inventory o where o.quantity = 0").executeUpdate();

}

Page 7: Java Persistence API part.2 Eriq Muhammad Adams J eriq.adams@ub.ac.ideriq.adams@ub.ac.id | ://eriq.lecture.ub.ac.id.

*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 Eriq Muhammad Adams J eriq.adams@ub.ac.ideriq.adams@ub.ac.id | ://eriq.lecture.ub.ac.id.

*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 Eriq Muhammad Adams J eriq.adams@ub.ac.ideriq.adams@ub.ac.id | ://eriq.lecture.ub.ac.id.

*Stand for Data 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 Eriq Muhammad Adams J eriq.adams@ub.ac.ideriq.adams@ub.ac.id | ://eriq.lecture.ub.ac.id.

*Illustration Sample

Fig. taken from EJB 3 in Action, Manning

Page 11: Java Persistence API part.2 Eriq Muhammad Adams J eriq.adams@ub.ac.ideriq.adams@ub.ac.id | ://eriq.lecture.ub.ac.id.

*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 Eriq Muhammad Adams J eriq.adams@ub.ac.ideriq.adams@ub.ac.id | ://eriq.lecture.ub.ac.id.

*Illustration sample

Fig. taken from EJB 3 in Action, Manning

Page 13: Java Persistence API part.2 Eriq Muhammad Adams J eriq.adams@ub.ac.ideriq.adams@ub.ac.id | ://eriq.lecture.ub.ac.id.

*EJB 3 in Action, Manning

*Beginning EJB 3 Application Development, Apress