Posted on 2010-08-18 15:56
疯狂 阅读(1469)
评论(0) 编辑 收藏 所属分类:
java 、
database 、
questions 、
spring 、
hibernate 、
web
使用顺序:
1 <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
之后才是xml配置:
2 <tx:advice id="txAdviceService" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" read-only="false"/>
<tx:method name="add*" read-only="false"/>
<tx:method name="update*" read-only="false"/>
<tx:method name="del*" read-only="false"/>
<tx:method name="apply*" read-only="false"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="serviceMethods"
expression="execution(* com.joe.service.*.*(..))"/>
<aop:advisor advice-ref="txAdviceService" pointcut-ref="serviceMethods"/>
</aop:config>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
如果写反会出现如果使用的
@Transactional的方法在 <tx:method name="*" read-only="true"/>
里面 就会发现没有可写事务 :
error:Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.