spring声明式事务的问题???????? 在spring中配置了声明式事务有什么用呢???是不是配置了之后我们就可以不用自己开启事务和关闭事务了????那如果这样的话,我们在方法中还要不要有session对象 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <tx:advice id="advice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="update*" propagation="REQUIRED"/> <tx:method name="delete*" propagation="REQUIRED"/> <tx:method name="insert*" propagation="REQUIRED"/> </tx:attributes> </tx:advice> <aop:config> <aop:advisor advice-ref="advice" pointcut="execution(* com.h2isea.erp.order.service.*.*(..))"/> </aop:config>这个配置表明在com.h2isea.erp.order.service包下的类,并以update,delete,insert开头的方法由spring的事务管理,而在这些类中,不需要求做任务的事务处理,换句话说,就是写没有事务的带码就可以了 com.h2isea.erp.order.service包下的一个OrderService实现方法 public int updateOrder(Order order) { return this.orderDAO.updateOrder(order); } OrderDAO的实现 public int updateOrder(Order order) { return this.sqlMapClientTemplate.update("order.updateOrder", order); }从头到尾是没有任何事务代码的,但是由于红色部分,也就有了事务 把<tx:method name="update*" propagation="REQUIRED"/> <tx:method name="delete*" propagation="REQUIRED"/> <tx:method name="insert*" propagation="REQUIRED"/> 换为<tx:method name="*"/> 就是让SPRING处理所有的方法的事务了。 1.声明式事务配置将配置方式与应用代码之间剥离开来,减少了事务的配置对应用代码的侵入。我个人认为是spring的一大闪光的地方。呵呵~~~2.如果配置了声明式事务,在应用代码中,不需要对事务进行任何的处理,包括你所说的开启和关闭事务,甚至提交及回滚的事务处理。3.spring对声明式事务的实现,是通过threadlocal把session和对应的事务放入到同一个线程中。换句话来说事务是一个流程,而session就是这个流程的载体。对于方法中,session对象的建立也最好交给spring来进行。如果不同session的事务是无法进行处理的。对于spring声明式事务的处理,还是需要深入进去了解下才能真正明白其使用的依据和方法的。建议在了解如何配置和使用之后,深入的去学习下。 那配置了spring声明式事务后,在方法中应该用什么方式操作数据,还能不能用类似session.save(a);这样来操作,还是说只能用this.getHibernateTemplate()来操作 通过Template来进行操作。一般将事务配置在service层。 1 可以通过getHibernateTemplate()来操作数据,应为他封装了hibernate的session的各种操作2 可以通过注入SessionFactory 3 可以使用回调方式调用hibernate的方法(HibernateTemplate就是封装的回调方法)4 可以获取当前线程绑定的session来操作数据,继承HibernateDaoSupport ,然后用getSession(getSessionFactory(), false);当然用getHibernateTemplate()是最简单实用的,详情请见spring中文参考手册 用myeclipse8.5自己生成的DAO可以直接使用吗? 这应该怎么实现 FCKEditor IE6 插入图片 Hibernate中可以把一张表的几个属性封装成一个list么?在线等! 分布式的问题 JSP的配置 各位大虾:救命呀!我用spring+hibernate出错了,出错信息如下,请各位大虾救命! JavaBean是不是一定要放在包里,直接放在classes下面不行吗? OA需要注意些什么? 求一个基于javaweb的进销存管理系统 想学JAVA编程,去哪里学习比较好 配置了spring声明式事务后,在方法中应该用什么方式操作数据
<tx:attributes>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="insert*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisor advice-ref="advice" pointcut="execution(* com.h2isea.erp.order.service.*.*(..))"/>
</aop:config>这个配置表明在com.h2isea.erp.order.service包下的类,并以update,delete,insert开头的方法由spring的事务管理,
而在这些类中,不需要求做任务的事务处理,换句话说,就是写没有事务的带码就可以了
com.h2isea.erp.order.service包下的一个OrderService实现方法
public int updateOrder(Order order) {
return this.orderDAO.updateOrder(order);
}
OrderDAO的实现
public int updateOrder(Order order) {
return this.sqlMapClientTemplate.update("order.updateOrder", order);
}从头到尾是没有任何事务代码的,但是由于红色部分,也就有了事务
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="insert*" propagation="REQUIRED"/>
换为
<tx:method name="*"/> 就是让SPRING处理所有的方法的事务了。
通过Template来进行操作。一般将事务配置在service层。
2 可以通过注入SessionFactory
3 可以使用回调方式调用hibernate的方法(HibernateTemplate就是封装的回调方法)
4 可以获取当前线程绑定的session来操作数据,继承HibernateDaoSupport ,然后用getSession(getSessionFactory(), false);当然用getHibernateTemplate()是最简单实用的,详情请见spring中文参考手册