Olá pessoal, estou iniciando no Spring e coloquei o controle de transação inicialmente no DAO, só para testes
try {
EntityTransaction tx = gerenciador.getTransaction();
tx.begin();
gerenciador.persist(object);
tx.commit();
} catch (final PersistenceException ex) {
ex.printStackTrace();
}
Dai, que li que o Spring na realidade pode gerenciar de forma transparente todo este controle de transação de forma que o metodo acima ficaria sendo somente:
Entao, lá fui eu tentar implementar controle de transação pelo spring, e para isso eu fiz as devidas configurações:
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="dbControleAcesso" />
</bean>
<!-- Classe responsável pela gestão das transacções (injectada) -->
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>
<bean id="uc" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target" ref="dao"/>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!-- Habilita o gerenciamento de transações atravéz da anotação @Transactional -->
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="dao" class="com.mcp.controleAcesso.dao.base.JpaDAO" >
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
Enfim, pelo que li isso ai em cima tá tudo certo, na execução não dá erro nenhum, no entanto, não grava no banco de jeito nenhum, só do jeito antigo é que gravava, onde eu explicitamente chamava o commit.
Já tentei anotar a classe, e como podem ver tambem tenter declarar claramente qual era a classe e o respectivo metodo pelo TransactionProxyFactoryBean, mas o commit nunca é dado.
Alguém sabe então me dizer o que está faltando, o trem que já me quebrou a cabeça.