网站首页 > 文章中心 > 其它

java给代码加上事务

作者:小编 更新时间:2023-08-16 18:09:13 浏览量:99人看过

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

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

看你是什么事务,jdbc事务,还是分布式事务,还是容器事务

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

Connection conn = null;

try

{

Class.forName("com.mysql.jdbc.Driver");

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();

先在工程的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();

直接调用接口方法就好

①可以直接使用spring◆atomikos框架进行管理

参考:

就不贴测试代码了,自己看着配置吧

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;

//分布式事务处理

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;

//获得事务管理对象

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)

userts.rollback();

} catch (IllegalStateException | SecurityException

| SystemException e1)

e1.printStackTrace();

psA.close();

psB.close();

connA.close();

connB.close();

} catch (SQLException e)

public DataSource getDataSourceA()

MysqlDataSource dataSource = new MysqlDataSource();

dataSource.setDatabaseName("mysql");

dataSource.setServerName("server");

dataSource.setUser("test");

dataSource.setPassword("test");

return dataSource;

public DataSource getDataSourceB()

dataSource.setUser("test1");

dataSource.setPassword("test1");

如何在JAVA中实现事务呢

你用同一个connection调用,

调用后再调用connection的comit()方法!

spring中声明式事务 配置好后,在java代码中怎么使用

你spring事务理解不到位,再去看下相关资料吧.

你上边所说的inerst update 只要将dao放到一个service下去管理就行 .

spring在service中事务管理,是当他调用service中的一个方法的时候 就会开启一个事务,

直到你执行完这个方法,才会commit.所以只要其中有一个失败都会回滚

java中的事务

@Transactional

public void save() {

//你的代码逻辑

如果没有使用Spring框架,可以用JDBC处理事务,如下:

try{

con.setAutoCommit(false);//开启事务 ......

con.commit();//try的最后提交事务

} catch() {

con.rollback();//回滚事务

以上就是土嘎嘎小编为大家整理的java给代码加上事务相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章