`
tanglei198577
  • 浏览: 59937 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

spring transaction testing with hibernate

    博客分类:
  • SSH
阅读更多
<beans  xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:aop="http://www.springframework.org/schema/aop" 
xmlns:tx="http://www.springframework.org/schema/tx" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation=" 
	http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
	http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-2.5.xsd 
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd"> 
    
   <description>Quick DAO Start for Spring</description>
    
   <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
     <property name="sessionFactory" ref="sessionFactory"></property>
   </bean>
   <!--programming transaction-->
   <bean id="tsService" class="com.transaction.SaveWithTs">
     <property name="hibernateTemplate" ref="hibernateTemplate"></property>
     <property name="transactionTemplate">
       <bean class="org.springframework.transaction.support.TransactionTemplate">
         <property name="transactionManager" ref="transactionManager">
         </property>
       </bean>
     </property>
   </bean>
   <!--declaring transaction-->
   <bean id="tsProxyService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
     <property name="target" ref="tsProxyTransactionImpl"></property>
     <property name="proxyInterfaces" value="com.transaction.TsProxyTransaction"></property>
     <property name="transactionManager" ref="transactionManager"></property>
     <property name="transactionAttributes">
       <props>
         <prop key="add*">PROPAGATION_REQUIRED</prop>
         <!--  <prop key="*">PROPAGATION_SUPPORTS</prop>-->
       </props>
     </property>
   </bean>
   <bean id="tsProxyTransactionImpl" class="com.transaction.TsProxyTransactionImpl">
     <!--  <property name="hibernateTemplate" ref="hibernateTemplate"></property>-->
     <property name="sessionFactory" ref="sessionFactory"></property>
   </bean>
   
 
     <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
       <property name="sessionFactory" ref="sessionFactory"></property>
     </bean>
     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
       <property name="dataSource" ref="dataSource"></property>
       <property name="mappingResources">
         <list>
           <value>com/dao/Area.hbm.xml</value>
         </list>
       </property>
       <property name="hibernateProperties">
         <props>
           <prop key="hibernate.dialect">${hibernate.dialect}</prop>
         </props>
       </property>
     </bean>
     
     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
       <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
       <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
       <property name="username" value="jil"></property>
       <property name="password" value="jil"></property>
     </bean> 


   </beans>

 <!--programming transaction class testing-->

package com.transaction;


import org.hibernate.HibernateException;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallback;
import org.springframework.transaction.support.TransactionTemplate;

import com.dao.Area;

public class SaveWithTs implements TransactionCallback {
	
	private TransactionTemplate transactionTemplate;
    private HibernateTemplate hibernateTemplate;

	public Object doInTransaction(TransactionStatus ts) {
		// TODO Auto-generated method stub
		return null;
	}
	public void saveWithTs(){
		transactionTemplate.execute(new TransactionCallback(){

			public Object doInTransaction(TransactionStatus ts) {
				// TODO Auto-generated method stub
				try{
					
					Area area = new Area();
					area.setAreaname("tanglei");
					area.setAreadetail("tanglei");
					area.setPid(new Long(10000));
					area.setAreaid(new Long(10000));
					area.setAreanum(new Long(10000));
					//jdbcTemplate.execute("insert into Area values(1000,'hehe','haha',100,100)");
					hibernateTemplate.save(area);
				    int j=1/0;
				} catch (HibernateException e) {
					ts.isRollbackOnly();
				}
				return null;
			}			
		});	
	}

	public void setTransactionTemplate(TransactionTemplate transactionTemplate) {
		this.transactionTemplate = transactionTemplate;
	}
	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
		this.hibernateTemplate = hibernateTemplate;
	}
}

 <!--declaring transaction class testing-->

package com.transaction;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.dao.Area;

public class TsProxyTransactionImpl extends HibernateDaoSupport implements TsProxyTransaction {


	public void addArea() {
		// TODO Auto-generated method stub
		Area area = new Area();
		area.setAreaname("tanglei");
		area.setAreadetail("tanglei");
		area.setPid(new Long(10000));
		area.setAreaid(new Long(10000));
		area.setAreanum(new Long(10000));
		//hibernateTemplate.save(area);
		getHibernateTemplate().save(area);
		//int j=1/0;
	}
	public void saveArea() {
		// TODO Auto-generated method stub
		Area area = new Area();
		area.setAreaname("tanglei");
		area.setAreadetail("tanglei");
		area.setPid(new Long(10000));
		area.setAreaid(new Long(10000));
		area.setAreanum(new Long(10000));
		getHibernateTemplate().save(area);
		int j=1/0;
	}

}

 

0
1
分享到:
评论

相关推荐

    spring recipe 英文版

    数据访问是应用程序的基础,Spring 提供了多种方式来处理数据库操作,包括 JPA、Hibernate 等主流 ORM 工具的集成。 #### 11. Spring Transaction Management 事务管理是保证数据一致性的重要手段,Spring 提供了...

    spring3.0的最新官方例子源码spring-samples

    3. **数据访问集成(Data Access Integration, DAO)**:Spring提供了对多种数据库访问技术的支持,包括JDBC、Hibernate和MyBatis等。通过查看源码,你可以学习到如何使用Spring的JdbcTemplate、HibernateTemplate...

    spring-boot-reference.pdf

    4. Working with Spring Boot 5. Learning about Spring Boot Features 6. Moving to Production 7. Advanced Topics II. Getting Started 8. Introducing Spring Boot 9. System Requirements 9.1. Servlet ...

    spring 架包

    - **ORM (Object-Relational Mapping)**: 集成了Hibernate、MyBatis等ORM框架,使Java对象与数据库表之间的映射更加方便。 - **JPA (Java Persistence API)**: 支持JPA规范,提供了事务管理和查询API。 **3. ** *...

    spring source code

    Spring提供了对各种数据访问技术的支持,包括JDBC、Hibernate、MyBatis等ORM框架,以及XML、JSON等对象/XML映射(Object/XML Mapping, OXM)技术。 7. **事务管理(Transaction Management)** Spring的Tx模块...

    SpringDao模式实例

    3. **HibernateTemplate** / **MyBatis-Spring**: 这两个是针对特定ORM框架(Hibernate和MyBatis)的模板类,它们进一步简化了对ORM框架的操作,例如自动处理session管理和事务,减少代码中的样板代码。 4. **...

    Spring boot点赞统计量

    3. **JPA 和 Hibernate**:为了与数据库交互,Spring Boot 提供了对 JPA(Java Persistence API)的支持,常用的实现是 Hibernate。我们需要定义 `BlogRepository` 接口,继承 `JpaRepository`,用于执行基本的 CRUD...

    Spring2.0API

    - Spring 2.0对数据访问层进行了大量优化,包括JDBC模板、Hibernate集成、JPA支持等。这些模板类简化了数据库操作,而ORM(对象关系映射)框架的集成则让开发者可以更方便地处理对象与数据库之间的映射。 5. **Web...

    spring学习资料

    5. **框架集成**:Spring可以轻松地与其他优秀框架(如Struts、Hibernate、MyBatis、Quartz等)协同工作。 6. **降低API使用难度**:Spring对复杂的Java EE API进行了封装,如JDBC、JavaMail等,让开发者更易使用。 ...

    spring帮助文档

    Spring 2.0提供了对多种数据存储技术的支持,如JDBC、ORM(Object-Relational Mapping)框架如Hibernate和MyBatis,以及OXM(Object-XML Mapping)用于XML和对象之间的映射。它通过提供模板类和回调接口,简化了...

    spring-framework-reference-4.1.2

    3.9. Testing Improvements ........................................................................................ 20 III. Core Technologies ..............................................................

    spring-framework-reference4.1.4

    3.9. Testing Improvements ........................................................................................ 20 III. Core Technologies ..............................................................

    cursomc-java-spring-jpa

    6. **Transaction Management**: 了解如何使用Spring的@Transactional注解来管理事务,确保数据库操作的一致性和完整性。 7. **Database Configuration**: 配置JPA连接到数据库,包括数据源、实体扫描、持久化单元...

    BackendDaiJPA

    6. **Transaction Management**: 在JPA中,事务管理是至关重要的。JPA支持编程式和声明式事务管理。声明式事务管理通过在方法上添加@Transactional注解实现,而编程式事务管理则需要手动开始和提交事务。 7. **...

    javaDAO设计模式

    4. **事务管理(Transaction Management)**:在进行多步骤的数据操作时,如转账操作,需要确保整个过程的原子性,这就涉及到事务管理。Spring框架提供了一种声明式事务管理方式,通过在方法上添加@Transactional...

    BusinessLogicOfPS:程序系统的业务逻辑

    Java的JTA(Java Transaction API)和Spring的@Transactional注解可用于管理事务。 7. **单元测试(Unit Testing)**:为了保证业务逻辑的正确性,开发过程中会编写单元测试,使用JUnit或其他测试框架对业务方法...

    bank:一个非常简单的六角形的例子

    1. **核心业务逻辑(Domain Logic)**:这部分代码通常包含银行应用的核心实体,如账户(Account)、交易(Transaction)等,以及处理这些实体的领域服务(Domain Services)。它们定义了业务规则,不依赖于任何特定...

    153094_Parallel_project_phase3

    JPA通过ORM(对象关系映射)框架,如Hibernate或EclipseLink,将Java对象映射到数据库表,简化了数据库操作。在这个项目中,JPA可能被用来创建实体类、定义数据关系、执行CRUD操作以及事务管理。 2. **实体...

Global site tag (gtag.js) - Google Analytics