JEE Programming
Download
Report
Transcript JEE Programming
INFORMATICS ENGINEERING – UNIVERSITY OF BRAWIJAYA
Java Persistence API part 2
JEE PROGRAMMING
Eriq Muhammad Adams J
[email protected]
Agenda
JPQL (Java Persistence Query Language)
EAO Pattern
Session Façade Pattern
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();
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{
………
JPQL (Java Persistence Query Language) (cont.)
entityManager.createNamedQuery(”findAllI
nventory”).getResultList();
entityManager.createNamedQuery(”findInve
ntoryByYear”).setParameter(” year”,
year).getResultList();
entityManager.createNamedQuery(”findInve
ntoryByRegion”).setParameter(0,
region).getResultList();
JPQL (Java Persistence Query Language) (cont.)
Bulk Update and Delete Operation
public int bulkDeleteEmptyInventory() {
return em.createQuery("delete from
Inventory o where o.quantity =
0").executeUpdate();
}
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();
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(”findInventoryByYea
r”).setParamater(0,year).getResultList();
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.
EAO Pattern (cont.)
Illustration Sample
Fig. taken from EJB 3 in Action, Manning
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.
Session Façade Pattern (cont.)
Illustration sample
Fig. taken from EJB 3 in Action, Manning
Demo
JPQL Demo in JPQLDemo.zip
EAO Pattern and Session Façade Pattern
Demo in EAOSessionFacade.zip
References
EJB 3 in Action, Manning
Beginning EJB 3 Application Development,
Apress