`

Groovy Sql使用Spring的事务管理

 
阅读更多

Grails如果不想用Hibernate的东东,可以直接用Sql

配置部分可以参考——

 

http://www.iteye.com/topic/11506?page=3

 

使用的代码:(配置、类似spring transactionTemplate、Closure = Callback)

 

 

	<bean id="defaultDsTarget" lazy-init="true"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName"><value>${db_local_driver}</value></property>  
		<property name="url"><value>${db_local_url}</value></property>  
		<property name="username"><value>${db_local_user}</value></property>  
		<property name="password"><value>${db_local_pwd}</value></property> 
	</bean>
	<bean id="defaultDs" class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">
		<constructor-arg>
			<ref bean="defaultDsTarget" />
		</constructor-arg>
	</bean>
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource">
			<ref bean="defaultDsTarget"/>
		</property>
	</bean>

 

 

 

	static DataSource getDs(){
		final dsBeanName = 'defaultDs'
		def context = AppContext.getContextBiz()
		return context.getBean(dsBeanName)
	}

	// use spring platform indenpendent TransactionManager
	static DataSourceTransactionManager getTm(){
		def context = AppContext.getContextBiz()
		return context.getBean('transactionManager')
	}

	// not available in weblogic
	static void withTrans(Closure callback){
		def tm = getTm()
		def transDef = new DefaultTransactionDefinition()
		def status = tm.getTransaction(transDef)
		try {
			callback.call()
			tm.commit(status)
		}catch (ex) {
			log.error('DSManager withTrans failed!', ex)

			tm.rollback(status)
			throw ex
		}
	}

 

			DSManager.withTrans{
				def dao = new YourDAO() // use defaultDs from spring beanfactory
			}
 

 

0
1
分享到:
评论

相关推荐

    Groovy+Tapestry5+Spring2.5+Hibernate3.2实现CRUD

    标题 "Groovy+Tapestry5+Spring2.5+Hibernate3.2实现CRUD" 涉及到的是一个使用几种技术栈构建Web应用程序的示例。这个项目结合了Groovy、Tapestry 5、Spring 2.5和Hibernate 3.2,旨在展示如何在实际开发中进行数据...

    spring源码分析(1-10)

    1. **Spring 事务处理**:Spring 提供了声明式事务管理,允许开发者在配置文件中定义事务边界,无需在业务逻辑代码中显式控制事务开始、提交和回滚。它主要基于AOP代理来实现,通过TransactionInterceptor拦截器进行...

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 11.1.1. Spring JDBC包结构...

    Spring3.0+myBatis3.0

    4. 事务管理:Spring的PlatformTransactionManager可以管理myBatis的事务。通过@Transactional注解,可以在方法级别控制事务的开启、提交和回滚,实现事务的统一管理。 5. AOP集成:Spring的AOP支持可以用于拦截...

    [Pro.Spring.3(2012)].Clarence.Ho.文字版

    读者将了解到Spring如何管理和配置Hibernate SessionFactory,以及如何利用Spring事务管理器来控制事务边界。 ### 第10章:使用JPA 2与Spring进行数据访问 这一章节重点介绍了Java Persistence API(JPA)2版本与...

    Apress.Pro.Spring.4th.Edition

    - **Groovy集成**:Spring支持使用Groovy等脚本语言,以提供更灵活的应用程序扩展能力。 - **动态脚本**:Spring还支持动态脚本的执行,可用于运行时动态配置等场景。 #### 15. 应用监控 - **监控工具**:Spring...

    Spring 2.0 开发参考手册

    9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 11.1.1. Spring ...

    spring chm文档

    9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 11.1.1. Spring ...

    spring-framework-4.2.5-schema

    开发者可以通过这些schema定义数据源,设置事务管理策略,甚至处理SQL异常。 `jms`目录包含了Java消息服务(JMS)的schema。Spring的JMS支持允许开发者以非侵入式的方式处理消息,实现解耦和异步通信。通过配置JMS...

    spring3.0 mybatis commons jar包

    6. **使用SqlSessionTemplate**:通过Spring提供的SqlSessionTemplate或SqlSessionDaoSupport进行数据操作,以实现事务管理。 **Commons库** Apache Commons是Java领域的一系列实用工具库,包含多个子项目,如...

    Pro Spring3

    - **Groovy 与 Spring**:探讨 Groovy 脚本语言如何与 Spring 结合使用。 - **脚本引擎**:介绍 Spring 提供的脚本引擎支持。 - **动态编程**:讨论如何利用脚本支持进行动态编程。 #### 二十三、Spring 应用监控...

    Spring中文帮助文档

    9.9.1. 对一个特定的 DataSource 使用了错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 11.1.1. 选择一...

    《Spring3.1 和 MyBatis 整合笔记 》源代码(第二版)

    7. **Spring的事务管理**:通过Spring的PlatformTransactionManager进行事务控制,确保数据的一致性。 8. **Spring的DAO层**:创建Service层接口和实现类,通过@Autowired注解注入Mapper接口,实现业务逻辑。 9. *...

    Redis+mysql整合spring的Demo

    - 在Spring中,可以使用`@Transactional`注解实现数据库事务管理。在Redis中,由于其单线程模型,事务主要通过`MULTI`、`EXEC`命令实现。 - 整合Redis和MySQL时,需要考虑分布式事务的问题,例如使用两阶段提交...

    Spring API

    9.9.1. 对一个特定的 DataSource 使用了错误的事务管理器 9.10. 更多的资源 10. DAO支持 10.1. 简介 10.2. 一致的异常层次 10.3. 一致的DAO支持抽象类 11. 使用JDBC进行数据访问 11.1. 简介 11.1.1. 选择一种...

    Spring Persistence with Hibernate (英文)

    - **事务管理**:Spring提供了一种声明式事务管理方式,可以非常方便地管理数据库事务。 2. **Hibernate的基础** - **ORM(对象关系映射)**:Hibernate的核心功能之一就是ORM,它允许开发者以面向对象的方式操作...

    spring2.5所用到的jar包

    7. **事务管理**: Spring 2.5提供了声明式和编程式事务管理,使开发者能够轻松地控制事务边界。`@Transactional`注解可以在方法级别声明事务需求,简化事务管理。 8. **容器增强**: Spring 2.5的Bean容器引入了更多...

    Pro Spring 3

    这一章可能会讨论使用Groovy等脚本语言在Spring中进行编程。 第23章讲述了Spring应用监控。本章介绍了如何监控Spring应用的性能,包括应用日志、性能指标和健康状况等。 附录A介绍了SpringSource Tool Suite,这是...

    spring-boot-starter-mybatis-spring-boot-1.3.4.zip

    Spring Boot默认使用`DataSourceTransactionManager`作为事务管理器,通过`@Transactional`注解可以声明式地控制事务的边界。 7. **性能优化** `spring-boot-starter-mybatis`还提供了缓存支持,可以利用MyBatis...

Global site tag (gtag.js) - Google Analytics