| java.lang.Object org.springframework.orm.jpa.EntityManagerFactoryAccessor org.springframework.orm.jpa.JpaAccessor org.springframework.orm.jpa.JpaTemplate
JpaTemplate | public class JpaTemplate extends JpaAccessor implements JpaOperations(Code) | | Helper class that allows for writing JPA data access code in the same style
as with Spring's well-known JdoTemplate and HibernateTemplate classes.
Automatically converts PersistenceExceptions into Spring DataAccessExceptions,
following the org.springframework.dao exception hierarchy.
The central method is of this template is "execute", supporting JPA access code
implementing the
JpaCallback interface. It provides JPA EntityManager
handling such that neither the JpaCallback implementation nor the calling code
needs to explicitly care about retrieving/closing EntityManagers, or handling
JPA lifecycle exceptions.
Can be used within a service implementation via direct instantiation with
a EntityManagerFactory reference, or get prepared in an application context
and given to services as bean reference. Note: The EntityManagerFactory should
always be configured as bean in the application context, in the first case
given to the service directly, in the second case to the prepared template.
NOTE: JpaTemplate mainly exists as a sibling of JdoTemplate and
HibernateTemplate, offering the same style for people used to it. For newly
started projects, consider adopting the standard JPA style of coding data
access objects instead, based on a "shared EntityManager" reference injected
via a Spring bean definition or the JPA PersistenceContext annotation.
(Using Spring's SharedEntityManagerBean / PersistenceAnnotationBeanPostProcessor,
or using a direct JNDI lookup for an EntityManager on a Java EE 5 server.)
JpaTemplate can be considered as direct alternative to working with the
native JPA EntityManager API (through a shared EntityManager reference,
as outlined above). The major advantage is its automatic conversion to
DataAccessExceptions; the major disadvantage is that it introduces
another thin layer on top of the native JPA API. Note that exception
translation can also be achieved through AOP advice; check out
org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor .
LocalContainerEntityManagerFactoryBean is the preferred way of
obtaining a reference to an EntityManagerFactory, at least outside of a full
Java EE 5 environment. The Spring application context will manage its lifecycle,
initializing and shutting down the factory as part of the application.
Within a Java EE 5 environment, you will typically work with a server-managed
EntityManagerFactory that is exposed via JNDI, obtained through Spring's
org.springframework.jndi.JndiObjectFactoryBean .
author: Juergen Hoeller since: 2.0 See Also: JpaTemplate.setEntityManagerFactory See Also: JpaCallback See Also: javax.persistence.EntityManager See Also: LocalEntityManagerFactoryBean See Also: LocalContainerEntityManagerFactoryBean See Also: JpaTransactionManager See Also: org.springframework.transaction.jta.JtaTransactionManager See Also: org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter See Also: org.springframework.orm.jpa.support.OpenEntityManagerInViewInterceptor |
Constructor Summary | |
public | JpaTemplate() Create a new JpaTemplate instance. | public | JpaTemplate(EntityManagerFactory emf) Create a new JpaTemplate instance. | public | JpaTemplate(EntityManager em) Create a new JpaTemplate instance. |
Method Summary | |
public boolean | contains(Object entity) | protected EntityManager | createEntityManagerProxy(EntityManager em) Create a close-suppressing proxy for the given JPA EntityManager. | public Object | execute(JpaCallback action) | public Object | execute(JpaCallback action, boolean exposeNativeEntityManager) Execute the action specified by the given action object within a
EntityManager. | public List | executeFind(JpaCallback action) | public T | find(Class<T> entityClass, Object id) | public List | find(String queryString) | public List | find(String queryString, Object... values) | public List | findByNamedParams(String queryString, Map<String, ? extends Object> params) | public List | findByNamedQuery(String queryName) | public List | findByNamedQuery(String queryName, Object... values) | public List | findByNamedQueryAndNamedParams(String queryName, Map<String, ? extends Object> params) | public void | flush() | public T | getReference(Class<T> entityClass, Object id) | public boolean | isExposeNativeEntityManager() Return whether to expose the native JPA EntityManager to JpaCallback
code, or rather an EntityManager proxy. | public T | merge(T entity) | public void | persist(Object entity) | public void | refresh(Object entity) | public void | remove(Object entity) | public void | setExposeNativeEntityManager(boolean exposeNativeEntityManager) Set whether to expose the native JPA EntityManager to JpaCallback
code. |
JpaTemplate | public JpaTemplate()(Code) | | Create a new JpaTemplate instance.
|
JpaTemplate | public JpaTemplate(EntityManagerFactory emf)(Code) | | Create a new JpaTemplate instance.
Parameters: emf - EntityManagerFactory to create EntityManagers |
JpaTemplate | public JpaTemplate(EntityManager em)(Code) | | Create a new JpaTemplate instance.
Parameters: em - EntityManager to use |
createEntityManagerProxy | protected EntityManager createEntityManagerProxy(EntityManager em)(Code) | | Create a close-suppressing proxy for the given JPA EntityManager.
The proxy also prepares returned JPA Query objects.
Parameters: em - the JPA EntityManager to create a proxy for the EntityManager proxy, implementing all interfacesimplemented by the passed-in EntityManager object (that is,also implementing all provider-specific extension interfaces) See Also: javax.persistence.EntityManager.close |
execute | public Object execute(JpaCallback action, boolean exposeNativeEntityManager) throws DataAccessException(Code) | | Execute the action specified by the given action object within a
EntityManager.
Parameters: action - callback object that specifies the JPA action Parameters: exposeNativeEntityManager - whether to expose the nativeJPA entity manager to callback code a result object returned by the action, or null throws: org.springframework.dao.DataAccessException - in case of JPA errors |
isExposeNativeEntityManager | public boolean isExposeNativeEntityManager()(Code) | | Return whether to expose the native JPA EntityManager to JpaCallback
code, or rather an EntityManager proxy.
|
setExposeNativeEntityManager | public void setExposeNativeEntityManager(boolean exposeNativeEntityManager)(Code) | | Set whether to expose the native JPA EntityManager to JpaCallback
code. Default is "false": a EntityManager proxy will be returned,
suppressing close calls and automatically applying transaction
timeouts (if any).
As there is often a need to cast to a provider-specific EntityManager
class in DAOs that use the JPA 1.0 API, for JPA 2.0 previews and other
provider-specific functionality, the exposed proxy implements all interfaces
implemented by the original EntityManager. If this is not sufficient,
turn this flag to "true".
See Also: JpaCallback See Also: javax.persistence.EntityManager |
Fields inherited from org.springframework.orm.jpa.EntityManagerFactoryAccessor | final protected Log logger(Code)(Java Doc)
|
|
|