spring3事务之声明方式

spring的事务管理可以编码,也可声明!推荐声明!

1、添加spring、hibernate支持

myeclipse9.0直接支持spring3.0和hibernate3.3

2、创建spring装配文件(applicationContext.xml)

下图勾选bean 、aop、tx三项。

3、配置内容:

1)装配数据源和工厂


		
		
		
		
		
	
	
		
			
		
		
			
				
					org.hibernate.dialect.MySQLDialect
				
				true
			
		
		
			
				mapping.xml
			
		
	
2)装配事务管理



   
       
   
3)装配事务属性



    
      
      
      
      
      
      
      
    

4)确定切面,需要使用事务的bean





5)常规bean可以配到另外的装配文件中


		
			
		
如果bean中不使用hibernateTemplate,可以不注入此对象

	
		
	

4、测试对象

业务实体 BookManager.java
public class BookManager implements BookManagerInterface{
	private Book book;
	private Address addrss;
	private HibernateTemplate hibernateTemplate;
	
	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
		this.hibernateTemplate = hibernateTemplate;
	}
	public void addBook(Book b,Address a){
		hibernateTemplate.save(b);
		Integer.parseInt("d");
		hibernateTemplate.save(a);
	}
}
测试类 TestBookManager .java
public class TestBookManager {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String cfg[]=new String[]{"src\\hibernateSpring.xml",
				"src\\commonbean.xml"
				};
		ApplicationContext ac =new FileSystemXmlApplicationContext(cfg);
		BookManagerInterface bmi=(BookManagerInterface) ac.getBean("bookManager");
		System.out.println(bmi.getClass().getName());
		Book b =new Book();
		b.setName("spring aop");
		Address a =new Address();
		a.setCity("天津");
		bmi.addBook(b, a);
	}
}

5、事务的传递性说明

PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择,没特殊性需求,这个足矣

PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。

PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。

PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。

PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。

PROPAGATION_NESTED--如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。




你可能感兴趣的:(备忘)