在grails加入spring事务支持

本文介绍如何在Grails项目中使用Spring进行事务管理。通过在resources.xml文件中配置Spring事务,可以为指定的服务类提供事务支持。示例展示了如何为UserImpl服务类配置事务,并设置了读写操作的不同事务属性。
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。
Nano-ESG数据资源库的构建基于2023年初至2024年秋季期间采集的逾84万条新闻文本,从中系统提炼出企业环境、社会及治理维度的信息。其构建流程首先依据特定术语在德语与英语新闻平台上检索,初步锁定与德国DAX 40成分股企业相关联的报道。随后借助嵌入技术对文本段落执行去重操作,以降低内容冗余。继而采用GLiNER这一跨语言零样本实体识别系统,排除与目标企业无关的文档。在此基础上,通过GPT-3.5与GPT-4o等大规模语言模型对文本进行双重筛选:一方面判定其与ESG议题的相关性,另一方面生成简明的内容概要。最终环节由GPT-4o模型完成,它对每篇文献进行ESG情感倾向(正面、中性或负面)的判定,并标注所涉及的ESG具体维度,从而形成具备时序特征的ESG情感与维度标注数据集。 该数据集适用于多类企业可持续性研究,例如ESG情感趋势分析、ESG维度细分类别研究,以及企业可持续性事件的时序演变追踪。研究者可利用数据集内提供的新闻摘要、情感标签与维度分类,深入考察企业在不同时期的环境、社会及治理表现。此外,借助Bertopic等主题建模方法,能够从数据中识别出与企业相关的核心ESG议题,并观察这些议题随时间的演进轨迹。该资源以其开放获取特性与连续的时间覆盖,为探究企业可持续性表现的动态变化提供了系统化的数据基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值