Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/07/2011, 01:12
Avatar de edjuradob
edjuradob
 
Fecha de Ingreso: junio-2011
Ubicación: España
Mensajes: 24
Antigüedad: 12 años, 10 meses
Puntos: 1
Transacciones en Spring e ibatis

Hola

Tengo un proyecto en el que estoy utilizando spring 1.2, ibatis 2.3 y Tomcat 6
Estoy configurando las transacciones para que se manejen mediante Spring, sin embargo, no esta funcionando correctamente.
Lo que quiero es que las transacciones esten a nivel de servicio y no a nivel DAO (para no poner toda la lógica de negocio en el DAO).
El problema es que esta generando dos transacciones distintas para cada inserción, por tanto, si genero un error, no hace el rollback y si lo dejo que ponga el read uncommited, da un error de restricción de integridad (no existe la Foreign key de la primera inserción)

Abajo mi código:

transaction-context:
Código XML:
Ver original
  1. <bean id="transactionManager"
  2.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  3.         <property name="dataSource">
  4.             <ref bean="dataSource" />
  5.         </property>
  6.     </bean>
  7.  
  8. <bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
  9.         <property name="transactionManager" ref="transactionManager"/>
  10.         <property name="transactionAttributes">
  11.             <props>
  12.                 <prop key="insert*">
  13.                     PROPAGATION_REQUIRED,                   ISOLATION_READ_UNCOMMITTED,-BDException,-TablonException
  14.                 </prop>
  15.             </props>
  16. <!--siguientes prop keys...-->
  17.         </property>
  18.     </bean>
  19. <!-- datasource -->
  20.     <bean id="dataSource" class="com.ibatis.common.jdbc.SimpleDataSource"
  21.     destroy-method="close">
  22.  
  23.         <constructor-arg>
  24.             <map>
  25.                 <entry key="JDBC.Driver">
  26.                     <value>${jdbc.driverClassName}</value>
  27.                 </entry>
  28.                 <entry key="JDBC.ConnectionURL">
  29.                     <value>${jdbc.url}</value>
  30.                 </entry>
  31.                 <entry key="JDBC.Username">
  32.                     <value>${jdbc.username}</value>
  33.                 </entry>
  34.                 <entry key="JDBC.Password">
  35.                     <value>${jdbc.password}</value>
  36.                 </entry>
  37.                 <entry key="JDBC.DefaultAutoCommit">
  38.                     <value>false</value>
  39.                 </entry>
  40.             </map>
  41.         </constructor-arg>
  42.  
  43.     </bean>

en persistence-comu-context:
Código XML:
Ver original
  1. <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
  2.         <property name="configLocation">
  3.             <value>
  4.                 /WEB-INF/config/sqlMapConfig.xml
  5.             </value>
  6.         </property>
  7.         <property name="dataSource">
  8.             <ref bean="dataSource" />
  9.         </property>
  10.     </bean>
  11. <!--    DAOS:    -->
  12. <bean id="UnDAOTarget" class="myPackage.dao.impl.UnDAOImpl" >
  13.         <property name="sqlMapClient">
  14.             <ref bean="sqlMapClient " />
  15.         </property>
  16.         <property name="dataSource" ref="dataSource" />
  17.     </bean>