`

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 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领域的一系列实用工具库,包含多个子项目,如...

    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 ...

    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