## org.springframework.orm.jpa
Class JpaAccessor

    java.lang.Object
      org.springframework.orm.jpa.EntityManagerFactoryAccessor
          org.springframework.orm.jpa.JpaAccessor

All Implemented Interfaces:
  InitializingBean

Direct Known Subclasses:
  JpaInterceptor, JpaTemplate

    public abstract class JpaAccessor

extends EntityManagerFactoryAccessor
implements InitializingBean

Base class for JpaTemplate and JpaInterceptor, defining common properties such as EntityManagerFactory and flushing behavior.

Not intended to be used directly. See `JpaTemplate` and `JpaInterceptor`.

Since:
  2.0
Author:
  Juergen Hoeller
See Also:
  `EntityManagerFactoryAccessor.setEntityManagerFactory(javax.persistence.EntityManagerFactory)`, `setEntityManager(javax.persistence.EntityManager)`, `setJpaDialect(org.springframework.orm.jpa.JpaDialect)`, `setFlushEager(boolean)`, `JpaTemplate`, `JpaInterceptor`, `JpaDialect`

Field Summary

Fields inherited from class org.springframework.orm.jpa.EntityManagerFactoryAccessor
`logger`

Constructor Summary
`JpaAccessor()`

Method Summary
`void` `afterPropertiesSet()` Eagerly initialize the JPA dialect, creating a default one for the specified EntityManagerFactory if none set.
`protected void` `flushIfNecessary(javax.persistence.EntityManager em, boolean existingTransaction)` Flush the given JPA entity manager if necessary.
`javax.persistence.EntityManager` `getEntityManager()` Return the JPA EntityManager to use.
`JpaDialect` `getJpaDialect()` Return the JPA dialect to use for this accessor.
`boolean` `isFlushEager()` Return if this accessor should flush changes to the database eagerly.
`void` `setEntityManager(javax.persistence.EntityManager entityManager)` Set the JPA EntityManager to use.
`void` `setFlushEager(boolean flushEager)` Set if this accessor should flush changes to the database eagerly.
`void` `setJpaDialect(JpaDialect jpaDialect)` Set the JPA dialect to use for this accessor.
`RuntimeException` `translateIfNecessary(RuntimeException ex)` Convert the given runtime exception to an appropriate exception from the `org.springframework.dao` hierarchy if necessary, or return the exception itself if it is not persistence related

Methods inherited from class org.springframework.orm.jpa.EntityManagerFactoryAccessor
`createEntityManager, getEntityManagerFactory, getJpaPropertyMap, getTransactionalEntityManager, setEntityManagerFactory, setJpaProperties, setJpaPropertyMap`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### JpaAccessor

    public JpaAccessor()

Method Detail

### setEntityManager

    public void setEntityManager(javax.persistence.EntityManager entityManager)

  Set the JPA EntityManager to use.

### getEntityManager

    public javax.persistence.EntityManager getEntityManager()

  Return the JPA EntityManager to use.

### setJpaDialect

    public void setJpaDialect(JpaDialect jpaDialect)

  Set the JPA dialect to use for this accessor.

  The dialect object can be used to retrieve the underlying JDBC connection, for example.

### getJpaDialect

    public JpaDialect getJpaDialect()

  Return the JPA dialect to use for this accessor.

  Creates a default one for the specified EntityManagerFactory if none set.

### setFlushEager

    public void setFlushEager(boolean flushEager)

  Set if this accessor should flush changes to the database eagerly.

  Eager flushing leads to immediate synchronization with the database, even if in a transaction. This causes inconsistencies to show up and throw a respective exception immediately, and JDBC access code that participates in the same transaction will see the changes as the database is already aware of them then. But the drawbacks are:

  - additional communication roundtrips with the database, instead of a single batch at transaction commit;
  - the fact that an actual database rollback is needed if the JPA transaction rolls back (due to already submitted SQL statements).

### isFlushEager

    public boolean isFlushEager()

  Return if this accessor should flush changes to the database eagerly.

### afterPropertiesSet

    public void afterPropertiesSet()

  Eagerly initialize the JPA dialect, creating a default one for the specified EntityManagerFactory if none set.

  Specified by:
    `afterPropertiesSet` in interface `InitializingBean`

### flushIfNecessary

    protected void flushIfNecessary(javax.persistence.EntityManager em,
                                    boolean existingTransaction)
                             throws javax.persistence.PersistenceException

  Flush the given JPA entity manager if necessary.

  Parameters:
    `em` - the current JPA PersistenceManage
    `existingTransaction` - if executing within an existing transaction
  Throws:
    `javax.persistence.PersistenceException` - in case of JPA flushing errors

### translateIfNecessary

    public RuntimeException translateIfNecessary(RuntimeException ex)

  Convert the given runtime exception to an appropriate exception from the `org.springframework.dao` hierarchy if necessary, or return the exception itself if it is not persistence related

  Default implementation delegates to the JpaDialect. May be overridden in subclasses.

  Parameters:
    `ex` - runtime exception that occured, which may or may not be JPA-related
  Returns:
    the corresponding DataAccessException instance if wrapping should occur, otherwise the raw exception
  See Also:
    `DataAccessUtils.translateIfNecessary(java.lang.RuntimeException, org.springframework.dao.support.PersistenceExceptionTranslator)`