Hi friends!!
I'm trying to use the declarative transaction management with Hibernate in Spring. But i can't obtain a rollback at my wrong actions on BBDD.
This is my applicationContext-Hibernate.xml:
My HibernateManager is:Code:<beans> <!-- ========================= GENERAL DEFINITIONS ========================= --> <!-- Referencia al fichero de propiedades "messages.properties" --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basename"><value>messages</value></property> </bean> <!-- ========================= RESOURCE DEFINITIONS ========================= --> <!-- DataSource a utilizar en la aplicacion --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"><value>oracle.jdbc.driver.OracleDriver</value></property> <property name="url"><value>jdbc:oracle:thin:@192.168.24.13:1521:oradesa</value></property> <property name="username"><value>dqtfinf</value></property> <property name="password"><value>dqtfinf</value></property> </bean> <!-- SessionFactory de Hibernate--> <bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean"> <property name="dataSource"><ref local="dataSource"/></property> <!-- Fichero donde se encuentra el mapeo a los objetos relaciones en BBDD --> <property name="mappingResources"> <value>com/acotelsa/transactions/hibernate/spring_hibernate.xml</value> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">net.sf.hibernate.dialect.Oracle9Dialect</prop> <!-- <prop key="hibernate.cglib.use_reflection_optimizer">false</prop> <prop key="hibernate.show_sql">false</prop>--> </props> </property> </bean> <!-- Manager de transacciones para el SessionFactory de Hibernate (alternativo a JTA) --> <!-- probar también con "org.springframework.transaction.jta.JtaTransactionManager"--> <bean id="txManager" class="org.springframework.orm.hibernate.HibernateTransactionManager"> <property name="sessionFactory"><ref local="sessionFactory"/></property> </bean> <!-- ========================= BUSINESS OBJECT DEFINITIONS ========================= --> <!-- Proxy transaccional para el objeto de negocio principal de la aplicacion --> <bean id="blankProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"><ref local="txManager"/></property> <property name="target"><ref local="blankTarget"/></property> <property name="transactionAttributes"> <props> <prop key="*">PROPAGATION_REQUIRED,readOnly</prop> </props> </property> </bean> <!-- Objeto de negocio principal de SpringHibernateBlank. Implementación con Hibernate --> <bean id="blankTarget" class="com.acotelsa.transactions.hibernate.HibernateProductoManager"> <property name="sessionFactory"><ref local="sessionFactory"/></property> </bean> </beans>
When i call the "createProducto" method, is doesn't provoke the rollback, what is wrong??Code:public class HibernateProductoManager extends HibernateDaoSupport{ public HibernateProductoManager() { } /** * Crea el producto especificado * @param producto El producto a crear en BBDD * @return El identificador del producto creado */ public Integer createProducto(Producto producto) { Integer id= (Integer) getHibernateTemplate().save(producto); id= (Integer) getHibernateTemplate().save(producto); //to provoke rollback return id; } }


Reply With Quote