spring事务管理小疑点问问!
spring事务管理小问题问问!!配置代码:!-- 配置事务,使用代理的方式 --bean idtransactionProxy clas
spring事务管理小问题问问!!
配置代码:
<!-- 配置事务,使用代理的方式 -->
<bean id="transactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
<property name="transactionManager" ref="transactionManager"></property>
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
<prop key="update*">PROPAGATION_REQUIRED,-myException</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
这个是我现在用的配置,网络上学来的,那个prop里的那些大写字母常量是什么东西???
还有这个配置的作用是什么:
<tx:annotation-driven />
[解决办法]事务传播行为类型
说明
PROPAGATION_REQUIRED
如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。
PROPAGATION_SUPPORTS
支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY
使用当前的事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW
新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED
以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER
以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED
如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。
[解决办法]作用:楼上的正解。一般用第一个就可以了;
<tx:annotation-driven />
这个是启用注解配置的简单写法;简写形式可以让初学都快速应用默认配置方案。<mvc:annotation-driven /> 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。
并提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。
[解决办法]是的
[解决办法]这个是我的另一个帖子:http://bbs.csdn.net/topics/390666111
按理说getCurrentSession应该没问题啊,可是不知道为什么报错了。
我在manager中调用dao,而manager中的方法我都给了事务注解啊,getCurrentSession也在事务中调用啊
@Transactional
public List<T> findAll() {
if(baseDao==null){
this.setDao(baseDao);
}
return baseDao.findAll();
}
不明白!!!
你那边已经提示很明显了。java.lang.NoSuchMethodError: org.hibernate.SessionFactory.getCurrentSession()Lorg/hibernate/classic/Session;
你这边的这个SessionFactory没有那个方法。hibernate很久没用了。现在ibatis用的比较多了;你看看hibernate4是不是方法名改了。