EclipseLink JPA 2.1
This page contains a summary of the major features supported in EclipseLink that implements the JPA 2.1 (JSR 338) specification requirements. The features and examples on this page do not represent a complete list. For more information, please see: the JSR 338 page.
Until JPA 2.1, performing deletes or updates was not available using the Criteria API. Through the addition of CriteriaUpdate/CriteriaDelete classes, support for bulkupdate/delete queries has now been added.
The following example will update the salary and status, of all Employees who make less than 10000$, and give them a raise.
CriteriaUpdate<Employee> q = cb.createCriteriaUpdate(Employee.class); Root<Employee> emp = q.from(Employee.class); .set(e.get(Employee_.salary), cb.prod(e.get(Employee_.salary), 1.1f)) .set(e.get(Employee_.status), "full_time") .where(cb.lt(emp.get(Emploee_.salary), 10000));
The following Java Persistence query language update statement is equivalent.
UPDATE Employee e SET e.salary = e.salary * 1.1, e.status = "full_time" WHERE e.salary < 10000
The folowwing example deletes all the PhoneNumbers that are no longer in service
CriteriaDelete<PhoneNumber> q = cb.createCriteriaDelete(PhoneNumber.class); Root<PhoneNumber> p = q.from(PhoneNumber.class); q.where(cb.equal(p.get(PhoneNumber_.status), "out_of_service"),
The following Java Persistence query language delete statement is equivalent.
DELETE FROM PhoneNumber p WHERE p.status = 'out_of_service'
JPA specification 2.1 has introduced support for executing Stored Procedure calls. This includes a new StoredProcedureQuery API and Named Stored Procedure Queries (pre-existing portions of code on the database).
The SQL spec and many databases have SQL functions that are not covered by the JPA specification. With the latest JPA specification the ability to call generic SQL functions was added to the JPQL syntax.
CDI Entity Listeners
Contexts and Dependency Injection (CDI) allows for container managed injection of artifacts into Java Objects. This feature provides the functionality needed for EclipseLink to integrate with CDI to provide for CDI injecting into the Entity Listener.
Allows relationship joins to be treated as a subclass of the join type.
Provides control over the conversion from an attribute type and value to the corresponding database type and value
In previous versions for JPA, although DDL generation was present it was not standardized or required. JPA 2.1 has added standardized provider DDL generation and made DDL generation a requirement.
Entity graphs are subgraphs of the entity model metadata. The entity graph contains metamodel representations of a set of the entity classes' attributes and metamodel representations of related entity classes. A constructed entity graph can be used as a template for applying operations like attribute loading.