成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

java給代碼加上事務(wù),java代碼中如何控制事務(wù)

如何用java開啟mysql事務(wù),要求詳細(xì)

如何用java開啟mysql事務(wù),要求詳細(xì)

創(chuàng)新互聯(lián)專注于西城網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供西城營(yíng)銷型網(wǎng)站建設(shè),西城網(wǎng)站制作、西城網(wǎng)頁(yè)設(shè)計(jì)、西城網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造西城網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供西城網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

看你是什么事務(wù),jdbc事務(wù),還是分布式事務(wù),還是容器事務(wù)

1,編程式事務(wù)管理(jdbc的事務(wù)是綁定在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); //取消自動(dòng)提交

PreparedStatement ps = conn.prepareCall("update something");

ResultSet rs = ps.executeQuery();

conn.commit(); //手動(dòng)提交

}

catch (Exception e)

{

conn.rollback();

e.printStackTrace();

}

finally

{

conn.close();

}

2,聲明式事務(wù)

先在工程的application.xml配置文件中添加如下代碼,開啟事務(wù)

!-- 聲明式事務(wù)控制配置 --

tx:annotation-driven transaction-manager="txManager"/

bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"

property name="datasource" ref="bassDataSource"/property

/bean

然后在你需要開啟事務(wù)的接口前面添加注解

@Transactional(rollbackFor = IOException.class)

public void add(String name) throws IOException

{

System.out.println("可以再類里和方法里面添加事務(wù)注解0~0");

throw new IOException();

}

直接調(diào)用接口方法就好

分布式事務(wù)處理(mysql貌似在5.X之后才支持) 的話,

1.可以直接使用spring+atomikos框架進(jìn)行管理

參考:

就不貼測(cè)試代碼了,自己看著配置吧

2,使用JTA(Java Transaction API)進(jìn)行分布式事務(wù)管理(測(cè)試代碼如下)

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;

//分布式事務(wù)處理

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

{

//獲得事務(wù)管理對(duì)象

userts = (UserTransaction) context.lookup("java:comp/UserTransaction");

//獲取兩個(gè)數(shù)據(jù)庫(kù)

connA = getDataSourceA().getConnection();

connB = getDataSourceB().getConnection();

//開啟事務(wù)

userts.begin();

//sql語句

psA = connA.prepareStatement("我加1");

psB = connB.prepareStatement("我減1");

//執(zhí)行sql

psA.executeUpdate();

psB.executeUpdate();

//事務(wù)提交

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;

}

}

如何在JAVA中實(shí)現(xiàn)事務(wù)呢

你用同一個(gè)connection調(diào)用,

調(diào)用后再調(diào)用connection的comit()方法!

spring中聲明式事務(wù) 配置好后,在java代碼中怎么使用

你spring事務(wù)理解不到位,再去看下相關(guān)資料吧。

你上邊所說的inerst update 只要將dao放到一個(gè)service下去管理就行 。

spring在service中事務(wù)管理,是當(dāng)他調(diào)用service中的一個(gè)方法的時(shí)候 就會(huì)開啟一個(gè)事務(wù),

直到你執(zhí)行完這個(gè)方法,才會(huì)commit。所以只要其中有一個(gè)失敗都會(huì)回滾

java中的事務(wù)

如果你用Spring框架,Spring中可以實(shí)現(xiàn)事務(wù)管理,在spring 配置文件中配置事務(wù)管理器,也可以使用Spring注解式事務(wù),在方法上加上@Transactional注解。

@Transactional

public void save() {

//你的代碼邏輯

}

如果沒有使用Spring框架,可以用JDBC處理事務(wù),如下:

try{

con.setAutoCommit(false);//開啟事務(wù) ......

con.commit();//try的最后提交事務(wù)

} catch() {

con.rollback();//回滾事務(wù)

}

網(wǎng)頁(yè)題目:java給代碼加上事務(wù),java代碼中如何控制事務(wù)
文章網(wǎng)址:http://jinyejixie.com/article12/hsdcdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、關(guān)鍵詞優(yōu)化、靜態(tài)網(wǎng)站品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站內(nèi)鏈、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
吉木乃县| 夏津县| 延边| 离岛区| 红河县| 辽阳市| 阜阳市| 津市市| 安顺市| 安多县| 东兴市| 罗山县| 铜鼓县| 红桥区| 吴忠市| 织金县| 金溪县| 武威市| 巫山县| 方正县| 玛沁县| 肥西县| 商洛市| 磐石市| 萨迦县| 巴彦淖尔市| 金湖县| 德昌县| 固阳县| 德安县| 兴安县| 新营市| 双辽市| 武城县| 中方县| 永仁县| 游戏| 固镇县| 德州市| 十堰市| 宜宾市|