org.springframework.dao.annotation

## Class PersistenceExceptionTranslationPostProcessor

- java.lang.Object
- - org.springframework.aop.framework.ProxyConfig
  - - org.springframework.aop.framework.AbstractAdvisingBeanPostProcessor
    - - org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor

All Implemented Interfaces:
  Serializable, Aware, BeanClassLoaderAware, BeanFactoryAware, BeanPostProcessor, Ordered

    public class PersistenceExceptionTranslationPostProcessor
    extends AbstractAdvisingBeanPostProcessor
    implements BeanFactoryAware

Bean post-processor that automatically applies persistence exception translation to any bean marked with Spring's @`Repository` annotation, adding a corresponding `PersistenceExceptionTranslationAdvisor` to the exposed proxy (either an existing AOP proxy or a newly generated proxy that implements all of the target's interfaces).

Translates native resource exceptions to Spring's `DataAccessException` hierarchy. Autodetects beans that implement the `PersistenceExceptionTranslator` interface, which are subsequently asked to translate candidate exceptions.

All of Spring's applicable resource factories (e.g. `LocalSessionFactoryBean`, `LocalEntityManagerFactoryBean`) implement the `PersistenceExceptionTranslator` interface out of the box. As a consequence, all that is usually needed to enable automatic exception translation is marking all affected beans (such as Repositories or DAOs) with the `@Repository` annotation, along with defining this post-processor as a bean in the application context.

Since:
  2.0
Author:
  Rod Johnson, Juergen Hoeller
See Also:
  `PersistenceExceptionTranslationAdvisor`, `Repository`, `DataAccessException`, `PersistenceExceptionTranslator`, Serialized Form

### Field Summary

### Fields inherited from class org.springframework.aop.framework.AbstractAdvisingBeanPostProcessor

`advisor`

### Fields inherited from interface org.springframework.core.Ordered

`HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

### Constructor Summary

Constructors
Constructor and Description
`PersistenceExceptionTranslationPostProcessor()`

### Method Summary

Methods
`void` `setBeanFactory(BeanFactory beanFactory)` Callback that supplies the owning factory to a bean instance.
`void` `setRepositoryAnnotationType(Class<? extends Annotation> repositoryAnnotationType)` Set the 'repository' annotation type.

### Methods inherited from class org.springframework.aop.framework.AbstractAdvisingBeanPostProcessor

`getOrder, isEligible, postProcessAfterInitialization, postProcessBeforeInitialization, setBeanClassLoader, setOrder`

### Methods inherited from class org.springframework.aop.framework.ProxyConfig

`copyFrom, isExposeProxy, isFrozen, isOpaque, isOptimize, isProxyTargetClass, setExposeProxy, setFrozen, setOpaque, setOptimize, setProxyTargetClass, toString`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### PersistenceExceptionTranslationPostProcessor

    public PersistenceExceptionTranslationPostProcessor()

### Method Detail

#### setRepositoryAnnotationType

    public void setRepositoryAnnotationType(Class<? extends Annotation> repositoryAnnotationType)

Set the 'repository' annotation type. The default repository annotation type is the `Repository` annotation.

This setter property exists so that developers can provide their own (non-Spring-specific) annotation type to indicate that a class has a repository role.

Parameters:
  `repositoryAnnotationType` - the desired annotation type

#### setBeanFactory

    public void setBeanFactory(BeanFactory beanFactory)

Description copied from interface: `BeanFactoryAware`
Callback that supplies the owning factory to a bean instance.

Invoked after the population of normal bean properties but before an initialization callback such as `InitializingBean.afterPropertiesSet()` or a custom init-method.

Specified by:
  `setBeanFactory` in interface `BeanFactoryAware`
Parameters:
  `beanFactory` - owning BeanFactory (never `null`). The bean can immediately call methods on the factory.
See Also:
  `BeanInitializationException`