Blog Detail

  • 四种控制事务的方法

    四种控制事务的方法

    第一种

    在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