问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用java开启mysql事务,要求详细

发布网友 发布时间:2022-04-24 16:22

我来回答

1个回答

热心网友 时间:2022-04-07 20:57

如何用java开启mysql事务,要求详细
看你是什么事务,jdbc事务,还是分布式事务,还是容器事务

1,编程式事务管理(jdbc的事务是绑定在connection上的)

Connection conn = null;
try
{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@host:1521:SID","username","password");
conn.setAutoCommit(false); //取消自动提交
PreparedStatement ps = conn.prepareCall("update something");
ResultSet rs = ps.executeQuery();
conn.commit(); //手动提交

}
catch (Exception e)
{
conn.rollback();
e.printStackTrace();
}
finally
{
conn.close();
}

2,声明式事务
先在工程的application.xml配置文件中添加如下代码,开启事务

<!-- 声明式事务控制配置 -->
<tx:annotation-driven transaction-manager="txManager"/>

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="datasource" ref="bassDataSource"></property>
</bean>
然后在你需要开启事务的接口前面添加注解
@Transactional(rollbackFor = IOException.class)
public void add(String name) throws IOException
{
System.out.println("可以再类里和方法里面添加事务注解0~0");
throw new IOException();
}
直接调用接口方法就好

分布式事务处理(mysql貌似在5.X之后才支持) 的话,
1.可以直接使用spring+atomikos框架进行管理
参考:http://blog.chinaunix.net/uid-21162795-id-3424973.html
就不贴测试代码了,自己看着配置吧

2,使用JTA(Java Transaction API)进行分布式事务管理(测试代码如下)
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.naming.InitialContext;
import javax.sql.DataSource;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

//分布式事务处理
public class transferAccount
{
@SuppressWarnings("null")
public void testTransferAccount()
{
UserTransaction userts = null;
Connection connA = null;
PreparedStatement psA = null;
InitialContext context = null;
Connection connB = null;
PreparedStatement psB = null;

try
{
//获得事务管理对象
userts = (UserTransaction) context.lookup("java:comp/UserTransaction");
//获取两个数据库
connA = getDataSourceA().getConnection();
connB = getDataSourceB().getConnection();
//开启事务
userts.begin();
//sql语句
psA = connA.prepareStatement("我加1");
psB = connB.prepareStatement("我减1");
//执行sql
psA.executeUpdate();
psB.executeUpdate();
//事务提交
userts.commit();

} catch (Exception e)
{
try
{
userts.rollback();
} catch (IllegalStateException | SecurityException
| SystemException e1)
{
e1.printStackTrace();
}
e.printStackTrace();
}
finally
{
try
{
psA.close();
psB.close();
connA.close();
connB.close();
} catch (SQLException e)
{
e.printStackTrace();
}
}
}

public DataSource getDataSourceA()
{
MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setDatabaseName("mysql");
dataSource.setServerName("server");
dataSource.setPortNumber(1433);
dataSource.setUser("test");
dataSource.setPassword("test");
return dataSource;
}

public DataSource getDataSourceB()
{
MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setDatabaseName("mysql");
dataSource.setServerName("server");
dataSource.setPortNumber(1435);
dataSource.setUser("test1");
dataSource.setPassword("test1");
return dataSource;
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
肺气肿吃什么食物最好 吃什么对肺气肿好 肺气肿老人吃什么水果好 世界乐坛唱功排行? 全球唱功排名? 全球唱功排名 MariahCarey与CelineDion谁唱歌唱得好些?或者谁的唱功较好? Mariah Carey 与 Celine Dion谁唱歌唱得好些?或者谁的唱功较好 国家水费多少钱一吨 国家水费标准是多少一吨?多少水才算一吨 水费是多少钱一吨 我新买的捕蝇草幼苗怎么养? java连接MySQL数据库的步骤 java怎样与数据库(my sql)相连接,及其使用的具体步骤 怎么养捕蝇草 市面上的纯牛奶中含多少奶? java如何连接mysql? 捕蝇草怎么养??? 说明在java程序中连接并查询Mysql的主要命令和步骤 捕蝇草怎么养谢谢 捕蝇草应该怎么养? 如何饲养捕蝇草?饲养季节? java怎么与MySql连接,要详细的步骤 捕蝇草的养殖方法 捕蝇草怎么养,捕蝇草的养殖方法和注意事项 捕蝇草好养吗? 怎么养捕蝇草? 捕蝇草怎么养? 儿童能喝豆本豆豆奶吗 拍豆本豆豆奶的名称 关于淘宝直播的挂字,电脑都操作好了,手机开始播的时候不显示,是非要用电脑上的摄像头吗? 蒙牛纯牛奶净含量是多少? 有没有Java教学视频讲如何jdbc链接mysql数据库的的 康佳加湿器不出雾自己修理 康佳加湿器风口处漏水是何原因? 牛奶的问题,真是纯牛奶吗 康佳加湿器没雾气出来,有风出来,指示灯亮的,没雾气出来 怎样用myeclipse创建php工程 请问一天喝几瓶250ml的纯牛奶合适? 每天一盒纯牛奶身体会有什么变化? 哪里可以查到高校保研名单? 如何用zendstudio新建一个PHP工程 纯牛奶一天喝几次最好? 怎么查自己大学的保研 学信网上有保研信息吗 儿童喝什么纯牛奶好?哪款纯牛奶比较好吸收? 大家知道每个学校的保研条例去哪看吗? 打算规划保研,请问保研的相关信息都有哪些渠道能获取呢? 如何编辑php工程 人一天喝多少牛奶? 怎么查获得保研资格的人的学分成绩