Я конвертирую конфигурацию на основе XML из приложения Spring. Это то, что часть конфигурации выглядит в XML:Как использовать перехватчик объектов Hibernate с менеджером транзакций JPA?
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQL82Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.use_sql_comments">true</prop>
<prop key="hibernate.format_sql">true</prop>
<!--<prop key="hibernate.hbm2ddl.auto">create-drop</prop> -->
</props>
</property>
<property name="packagesToScan" value="net.vivin" />
</bean>
<bean id="timeStampedEntityInterceptor" class="net.vivin.myapp.hibernate.interceptor.TimeStampedEntityInterceptor" />
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager"
p:sessionFactory-ref="sessionFactory"
p:entityInterceptor-ref="timeStampedEntityInterceptor">
</bean>
Посмотрев на this answer, я могу видеть, что лучшая практика заключается в использовании менеджера транзакций JPA вместо менеджера транзакций библиотеки Hibernate.
Я не могу понять, как установить перехватчик объектов в менеджере транзакций JPA. Кто-нибудь знает, как это можно сделать? Конфигурация на основе XML тоже прекрасна, потому что я могу преобразовать ее в Java. В моей Java конфигурации, менеджер транзакций все у меня есть:
@Bean
public PlatformTransactionManager getTransactionManager(EntityManagerFactory entityManagerFactory) {
JpaTransactionManager jpaTransactionManager = new JpaTransactionManager();
jpaTransactionManager.setEntityManagerFactory(entityManagerFactory);
return jpaTransactionManager;
}
Однако JpaTransactionManager
не имеет никакого способа, чтобы установить перехватчик. Кто-нибудь знает, как это можно сделать? Или мне просто нужно будет использовать диспетчер транзакций Hibernate?
Любые обновления по этому вопросу? – Amogh
@Amogh Да. Мое решение состояло в том, чтобы полностью отказаться от перехватчика спящего режима и преобразовать его в слушателя JPA. Это тоже немного чище. –