四种控制事务的方法
第一种
在DAO层控制事务
新建项目tx1
1.导入所需jar包
commons-dbcp-1.4.jar
commons-dbutils-1.4.jar
commons-pool-1.5.6.jar
mysql-connector-java-5.0.8-bin.jar
2.新建com.view包,模拟客户端调用action
package com.view;
import com.service.BusinessService;
import com.service.impl.BusinessServiceImpl;
public class Client {
//模拟action中调用service
public static void main(String[] args) {
BusinessService s = new BusinessServiceImpl();
s.transfer("aaa","bbb",100);
}
}
3.新建com.service包,写业务接口
package com.service;
public interface BusinessService {
/**
* 模拟转账
* @param from 转出的账户
* @param to 目标账户
* @param money 交易金额
*/
void transfer(String from, String to, float money);
}
4.新建com.service.impl包,实现业务接口
package com.service.impl;
import java.sql.Connection;
import com.dao.AccountDao;
import com.dao.impl.AccountDaoImpl;
import com.service.BusinessService;
import com.utils.DBCPUtil;
public class BusinessServiceImpl implements BusinessService {
private AccountDao dao = new AccountDaoImpl();
@Override
public void transfer(String from, String to, float money) {
dao.transfer(from, to, money);
}
}
5.新建com.dao包,写数据接口DAO
package com.dao;
public interface AccountDao {
/**
* 转账,这里有点牵扯到业务的意思
* @param from
* @param to
* @param money
*/
void transfer(String from, String to, float money);
}
6.新建com.dao.impl,写数据接口DAO的实现
package com.dao.impl;
import java.sql.Connection;
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
import com.dao.AccountDao;
import com.utils.DBCPUtil;
public class AccountDaoImpl implements AccountDao {
private QueryRunner qr = new QueryRunner();
@Override
public void transfer(String from, String to, float money) {
Connection conn = null;
try {
conn =DBCPUtil.get