1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
<!-- The transaction manager -->
<bean id="nmciTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
<property name="nestedTransactionAllowed">
<value>true</value>
</property>
</bean>
<!-- The DAO transaction advice -->
<!-- All methods are transactionnal, methods that start with "find" are readOnly, all other methods are rollback-able -->
<tx:advice id="nmciDAOTransactionAdvice" transaction-manager="nmciTransactionManager">
<tx:attributes>
<tx:method name="find*" read-only="true" propagation="NEVER"/>
<tx:method name="get*" read-only="true" propagation="NEVER"/>
<tx:method name="save*" read-only="false" propagation="NESTED" rollback-for="DAOException,DAOLockException,org.springframework.dao.DataAccessException"/>
<tx:method name="create*" read-only="false" propagation="NESTED" rollback-for="DAOException,DAOLockException,org.springframework.dao.DataAccessException"/>
<tx:method name="insert*" read-only="false" propagation="NESTED" rollback-for="DAOException,DAOLockException,org.springframework.dao.DataAccessException"/>
<tx:method name="update*" read-only="false" propagation="NESTED" rollback-for="DAOException,DAOLockException,org.springframework.dao.DataAccessException"/>
<tx:method name="delete*" read-only="false" propagation="NESTED" rollback-for="DAOException,DAOLockException,org.springframework.dao.DataAccessException"/>
</tx:attributes>
</tx:advice>
<!-- Defines the DAO aop pointcuts -->
<aop:config>
<aop:pointcut id="daoOperation" expression="execution(* com.miat.nmci.dao..*DAO.*(..))"/>
<aop:advisor pointcut-ref="daoOperation" advice-ref="nmciDAOTransactionAdvice" />
</aop:config>
<!-- The DAO transaction advice -->
<!-- All methods are transactionnal, methods that start with "find" are readOnly, all other methods are rollback-able, except method that start with "get" or "set" that are not transactionnal at all -->
<tx:advice id="nmciServiceTransactionAdvice" transaction-manager="nmciTransactionManager">
<tx:attributes>
<tx:method name="get*" propagation="NEVER"/>
<tx:method name="set*" propagation="NEVER"/>
<tx:method name="find*" read-only="true" propagation="NEVER"/>
<tx:method name="create*" read-only="false" propagation="NESTED" rollback-for="DAOException,DAOLockException,org.springframework.dao.DataAccessException"/>
<tx:method name="insert*" read-only="false" propagation="NESTED" rollback-for="DAOException,DAOLockException,org.springframework.dao.DataAccessException"/>
<tx:method name="update*" read-only="false" propagation="NESTED" rollback-for="DAOException,DAOLockException,org.springframework.dao.DataAccessException"/>
<tx:method name="delete*" read-only="false" propagation="NESTED" rollback-for="DAOException,DAOLockException,org.springframework.dao.DataAccessException"/>
</tx:attributes>
</tx:advice>
<!-- Defines the service aop pointcuts -->
<aop:config>
<aop:pointcut id="serviceOperation" expression="execution(* com.miat.nmci.services..*Service.*(..))"/>
<aop:advisor pointcut-ref="daoOperation" advice-ref="nmciDAOTransactionAdvice" />
</aop:config> |
Partager