在grails加入spring事务支持 转

grails中有个Service支持事务操作,但你如果想用Spring的事务,可以在grails-app/spring/resources.xml中加入spring的事务声明,如下所示:
resource.xml 代码
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xmlns:aop="http://www.springframework.org/schema/aop"  
  5.        xmlns:tx="http://www.springframework.org/schema/tx"  
  6.        xsi:schemaLocation="  
  7.        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
  8.        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd  
  9.        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">  
  10. <!-- 这是我们将要配置并使它具有事务性的Service对象 -->  
  11.   
  12.   <bean id="userImpl" class="transaction.UserImpl">  
  13.       <property name="sessionFactory" ref="sessionFactory"/>  
  14.   </bean>  
  15.   <!-- the transactional advice (i.e. what 'happens'; see the <aop:advisor/> bean below) -->  
  16.   
  17.   <tx:advice id="txAdvice" transaction-manager="txManager">  
  18.     <!-- the transactional semantics... -->  
  19.   
  20.     <tx:attributes>  
  21.       <!-- all methods starting with 'get' are read-only -->  
  22.   
  23.       <!-- other methods use the default transaction settings (see below) -->  
  24.   
  25.       <tx:method name="*"/>  
  26.     </tx:attributes>  
  27.   </tx:advice>  
  28.   
  29.   <!-- ensure that the above transactional advice runs for any execution of an operation defined by the FooService interface -->  
  30.   
  31.   <aop:config proxy-target-class="true">  
  32.     <aop:pointcut id="fooServiceOperation" expression="execution(* transaction.*.*(..))"/>  
  33.     <aop:advisor advice-ref="txAdvice" pointcut-ref="fooServiceOperation"/>  
  34.   </aop:config>  
  35.   
  36.   <!-- don't forget the DataSource -->  
  37.   
  38.   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
  39.     <property name="driverClassName" value="com.mysql.jdbc.Driver"/>  
  40.     <property name="url" value="jdbc:mysql://localhost:3306/OA"/>  
  41.     <property name="username" value="root"/>  
  42.     <property name="password" value=""/>  
  43.   </bean>  
  44.   
  45.   
  46.   <!-- similarly, don't forget the (particular) PlatformTransactionManager -->  
  47.   <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  48.     <property name="dataSource" ref="dataSource"/>  
  49.   
  50.   </bean>  
  51.   
  52.   <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  53.     <property name="sessionFactory" ref="sessionFactory"/>  
  54.   </bean>  
  55.   
  56.   <!-- other <bean/> definitions here -->  
  57.   
  58.   
  59. </beans>  
UserImpl.groovy 代码
 
  1. package transaction  
  2.   
  3. import com.jr.nj.hibernate.Event  
  4. import org.hibernate.SessionFactory  
  5. import org.hibernate.Session  
  6. import org.springframework.orm.hibernate3.HibernateTemplate  
  7.   
  8.   
  9. class UserImpl {  
  10.         def sessionFactory  
  11.     def save(params) throws Exception {  
  12.             def event =new Event()  
  13.             event.setDate new Date()  
  14.             event.setTitle 'aaa'  
  15.             HibernateTemplate ht = new HibernateTemplate(sessionFactory);  
  16.             ht.save event  
  17.             def event2 =new Event()  
  18.             event2.setDate new Date()  
  19.             event2.setTitle 'bbb'  
  20.             ht.save event2  
  21.             throw new RuntimeException("事务测试")  
  22.         }  
  23. }  


其中,Event可以是java定义的持久类或者groovy定义的domain。

 

原文:http://www.iteye.com/topic/133180

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值