package cn.lnu.service; import java.sql.Connection; import java.sql.SQLException; import cn.lnu.dbutils.demo.AccountDao; import cn.lnu.domain.Account; import cn.lnu.utils.JdbcUtils; //service�㣬��web���ṩ����ת�˷�����Ҫ����dao�� public class BusinessService { //ģ���a-->b�˻�ת��100Ԫ public void transfer1(int sourceid,int targetid,float money) throws SQLException{ Connection conn=null; try{ conn=JdbcUtils.getConnection(); conn.setAutoCommit(false);//Ϊ�˽�����sql�����Ϊһ�����壬��Ҫ�������� AccountDao dao=new AccountDao(conn); Account a=dao.find(sourceid);//�ײ�select Account b=dao.find(targetid);//�ײ�select a.setMoney(a.getMoney()-money); b.setMoney(b.getMoney()+money); //int x=1/0;//���쳣�����ݿ��Զ��ع����� dao.update(a);//�ײ�update dao.update(b);//�ײ�update conn.commit();//���������ύ������Ͱ�����sql����һ������ִ���� }finally{ if(conn!=null){ conn.close(); } } } //����TreadLocal�Ľ����û�ת�˵����������ԣ���JdbcUtils�������л�ȡʹ��ThreadLocal��ʼ�����ύ���񣬹ر����ӣ�������ӷ��� public void transfer2(int sourceid,int targetid,float money) throws SQLException{ try{//��δ���ᱻ���̷߳��ʣ�����û��ϵ������߳�һ�������ͷֱ��Ե�ǰ�߳�Ϊkey����һ�����ӣ����ڶ��߳�֮��key��ͬ���߳�֮��Ҳ�����໥���ţ����԰󶨵����ݿ����ӣ�Ҳ�ض������໥���� JdbcUtils.startTransaction();//������ִ�к󣬵�ǰ�߳��ϾͰ���һ��������������ݿ����� //Ȼ��󶨿����������ӵĵ�ǰ�߳�ִ���������,��ֻҪ���������һ���߳����ܣ�������Щ���ݿ����������һ���󶨵���ǰ�߳��µĿ���������������� AccountDao dao=new AccountDao(); Account a=dao.find(sourceid);//�ײ�select���ڲ�������Ӷ��ǰ󶨵���ǰ�߳��¿������������ Account b=dao.find(targetid);//�ײ�select a.setMoney(a.getMoney()-money); b.setMoney(b.getMoney()+money); //int x=1/0;//���쳣�����ݿ��Զ��ع����� dao.update(a);//�ײ�update dao.update(b);//�ײ�update JdbcUtils.commitTransaction(); }finally{ JdbcUtils.closeConnection(); } } }