spring配置c3p0连接池、spring的声明式事务管理

一、spring配置c3p0连接池:

1、导入maven依赖:



    com.mchange
    c3p0
    0.9.5.2

2、在spring配置文件中配置连接池:



	
	
	
	
		
		
		
		
		
	
	
	
		
	
	
	
		
	
	
	
		
	
	


3、相关类的代码:

public class UserDao {
	
	private JdbcTemplate jdbcTemplate;
	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}
	
	public void add(){
		System.out.println("UserDao调用JdbcTemplate..");
		String sql="insert into user values(?,?)";
		jdbcTemplate.update(sql,"小张","666");
	}
}
public class UserService {
	private UserDao userDao;
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	
	public void add(){
		System.out.println("service调用dao...");
		userDao.add();
	}
}

4、测试类:

public class Test2 {
	@Test
	public void test6(){
		ApplicationContext context=
				new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
		
		UserService userService = (UserService) context.getBean("userService");
		System.out.println("调用service...");
		userService.add();
	}
}

5、运行结果:

spring配置c3p0连接池、spring的声明式事务管理_第1张图片



二、spring的声明式事务管理:

spring的声明式事务管理有两种实现:

(1)基于xml配置文件的实现;

(2)基于注解方式的实现;


1、基于xml配置文件实现:

步骤:第一步:配置连接池;

第二步:配置事务管理器;

第三步:配置事务增强;

第四步:配置切面;

spring配置文件配置如下:




	
	
	
	
		
		
		
		
		
	
	
	
		
	
	
	
		
		
			
			
		
	
	
	
		
		
		
		
		
	
public class UserService {
	private UserDao userDao;
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	
	public void account(){
		//小明增加1000
		userDao.increase();
		
		//出现异常:
		int i=10/0;
		
		//小李减少1000
		userDao.decrease();
	}
}
public class Test2 {

	@Test
	public void test6(){
		ApplicationContext context=
				new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
		
		UserService userService = (UserService) context.getBean("userService");
		System.out.println("调用service...");
		userService.account();;
	}
}

运行结果:在执行account()方法是,出现异常,但是发生异常前的数据库操作没有被保存到数据库,说明配置成功了。


2、基于注解方式的实现:

步骤:第一步:配置连接池;

第二步:配置事务管理器;

第三步:开启事务注解;

第四步:在要使用事务的方法所在类上面添加注解@Transactional。

spring配置文件配置如下:





	
	
	
	
		
		
		
		
		
	
	
	
	
	
		
	
	
	
	


//第四步:在要使用事务的方法所在类上面添加注解@Transactional
@Transactional
public class UserService {
	private UserDao userDao;
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	
	public void account(){
		//小明增加1000
		userDao.increase();
		
		//出现异常:
		int i=10/0;
		
		//小李减少1000
		userDao.decrease();
	}
}


你可能感兴趣的:(SSM+SSH框架)