99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

java代碼中加事務(wù) java使用事務(wù)

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

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

網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計及定制網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站制作,高端網(wǎng)頁制作,對成都木制涼亭等多個行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計,網(wǎng)站優(yōu)化推廣哪家好,專業(yè)營銷推廣優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。

看你是什么事務(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); //取消自動提交

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

ResultSet rs = ps.executeQuery();

conn.commit(); //手動提交

}

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框架進行管理

參考:

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

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

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ù)管理對象

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

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

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 編程 ,事務(wù)管理的作用

事務(wù)就是對一系列的數(shù)據(jù)庫操作進行統(tǒng)一的提交或回滾操作,比如說做一個轉(zhuǎn)賬功能,要更改帳戶兩邊的數(shù)據(jù),這時候就必須要用事務(wù)才能算是嚴謹?shù)淖龇āR闯晒Γ词。3謹?shù)據(jù)一致性。如果中間有一個操作出現(xiàn)異常,那么回滾之前的所有操作。

這樣有什么好處呢。

這樣可以防止在一些意外(例如說突然斷電)的情況下出現(xiàn)亂數(shù)據(jù),防止數(shù)據(jù)庫數(shù)據(jù)出現(xiàn)問題。這邊加了錢,那邊卻還是一樣的數(shù),這就完了。要是開放一個網(wǎng)上交易的平臺,這樣就會出大問題的!

還有其他的一些操作,像是要添加多條數(shù)據(jù),如果程序要求必須全部正確才能插入的話,事務(wù)又起大作用了。

等等。。。開發(fā)中為了避免這種情況一般都會進行事務(wù)管理。

在JDBC中是通過Connection對象進行事務(wù)管理的,默認是自動提交事務(wù),可以手工將自動提交關(guān)閉,通過commit方法進行提交,rollback方法進行回滾,如果不提交,則數(shù)據(jù)不會真正的插入到數(shù)據(jù)庫中。

Hibernate中是通過Transaction進行事務(wù)管理,處理方法與JDBC中類似。

Spring中也有自己的事務(wù)管理機制,使用TransactionMananger進行管理,可以通過Spring的注入來完成此功能。

在java中,事務(wù)是什么?有什么用!

一、什么是Java事務(wù)

通常的觀念認為,事務(wù)僅與數(shù)據(jù)庫相關(guān)。

事務(wù)必須服從ISO/IEC所制定的ACID原則。ACID是原子性(atomicity)、一致性(consistency)、隔離性

(isolation)和持久性(durability)的縮寫。事務(wù)的原子性表示事務(wù)執(zhí)行過程中的任何失敗都將導(dǎo)致事務(wù)所做的任何修改失效。一致性表示

當(dāng)事務(wù)執(zhí)行失敗時,所有被該事務(wù)影響的數(shù)據(jù)都應(yīng)該恢復(fù)到事務(wù)執(zhí)行前的狀態(tài)。隔離性表示在事務(wù)執(zhí)行過程中對數(shù)據(jù)的修改,在事務(wù)提交之前對其他事務(wù)不可見。持

久性表示已提交的數(shù)據(jù)在事務(wù)執(zhí)行失敗時,數(shù)據(jù)的狀態(tài)都應(yīng)該正確。

通俗的理解,事務(wù)是一組原子操作單元,從數(shù)據(jù)庫角度說,就是一組SQL指令,要么全部執(zhí)行成功,若因為某個原因其中一條指令執(zhí)行有錯誤,則撤銷先前執(zhí)行過的所有指令。更簡答的說就是:要么全部執(zhí)行成功,要么撤銷不執(zhí)行。

既然事務(wù)的概念從數(shù)據(jù)庫而來,那Java事務(wù)是什么看之間有什么聯(lián)系看

實際上,一個Java應(yīng)用系統(tǒng),如果要操作數(shù)據(jù)庫,則通過JDBC來實現(xiàn)的。增加、修改、刪除都是通過相應(yīng)方法間接來實現(xiàn)的,事務(wù)的控制也相應(yīng)轉(zhuǎn)移到Java程序代碼中。因此,數(shù)據(jù)庫操作的事務(wù)習(xí)慣上就稱為Java事務(wù)。

二、為什么需要事務(wù)

事務(wù)是為解決數(shù)據(jù)安全操作提出的,事務(wù)控制實際上就是控制數(shù)據(jù)的安全訪問。具一個簡單例子:比如銀行轉(zhuǎn)帳業(yè)務(wù),賬戶A要將自己賬戶上的1000元

轉(zhuǎn)到B賬戶下面,A賬戶余額首先要減去1000元,然后B賬戶要增加1000元。假如在中間網(wǎng)絡(luò)出現(xiàn)了問題,A賬戶減去1000元已經(jīng)結(jié)束,B因為網(wǎng)絡(luò)中

斷而操作失敗,那么整個業(yè)務(wù)失敗,必須做出控制,要求A賬戶轉(zhuǎn)帳業(yè)務(wù)撤銷。這才能保證業(yè)務(wù)的正確性,完成這個操走就需要事務(wù),將A賬戶資金減少和B賬戶資

金增加方到一個事務(wù)里面,要么全部執(zhí)行成功,要么操作全部撤銷,這樣就保持了數(shù)據(jù)的安全性。

三、Java事務(wù)的類型

Java事務(wù)的類型有三種:JDBC事務(wù)、JTA(Java Transaction API)事務(wù)、容器事務(wù)。

1、JDBC事務(wù)

JDBC 事務(wù)是用 Connection 對象控制的。JDBC Connection 接口( java.sql.Connection )提供了兩種事務(wù)模式:自動提交和手工提交。 java.sql.Connection 提供了以下控制事務(wù)的方法:

public void setAutoCommit(boolean)

public boolean getAutoCommit()

public void commit()

public void rollback()

使用 JDBC 事務(wù)界定時,您可以將多個 SQL 語句結(jié)合到一個事務(wù)中。JDBC 事務(wù)的一個缺點是事務(wù)的范圍局限于一個數(shù)據(jù)庫連接。一個 JDBC 事務(wù)不能跨越多個數(shù)據(jù)庫。

2、JTA(Java Transaction API)事務(wù)

JTA是一種高層的,與實現(xiàn)無關(guān)的,與協(xié)議無關(guān)的API,應(yīng)用程序和應(yīng)用服務(wù)器可以使用JTA來訪問事務(wù)。

JTA允許應(yīng)用程序執(zhí)行分布式事務(wù)處理–在兩個或多個網(wǎng)絡(luò)計算機資源上訪問并且更新數(shù)據(jù),這些數(shù)據(jù)可以分布在多個數(shù)據(jù)庫上。JDBC驅(qū)動程序的JTA支持極大地增強了數(shù)據(jù)訪問能力。

如果計劃用 JTA 界定事務(wù),那么就需要有一個實現(xiàn) javax.sql.XADataSource 、

javax.sql.XAConnection 和 javax.sql.XAResource 接口的 JDBC

驅(qū)動程序。一個實現(xiàn)了這些接口的驅(qū)動程序?qū)⒖梢詤⑴c JTA 事務(wù)。一個 XADataSource 對象就是一個 XAConnection

對象的工廠。 XAConnection s 是參與 JTA 事務(wù)的 JDBC 連接。

您將需要用應(yīng)用服務(wù)器的管理工具設(shè)置 XADataSource 。從應(yīng)用服務(wù)器和 JDBC 驅(qū)動程序的文檔中可以了解到相關(guān)的指導(dǎo)。

J2EE 應(yīng)用程序用 JNDI 查詢數(shù)據(jù)源。一旦應(yīng)用程序找到了數(shù)據(jù)源對象,它就調(diào)用 javax.sql.DataSource.getConnection() 以獲得到數(shù)據(jù)庫的連接。

XA 連接與非 XA 連接不同。一定要記住 XA 連接參與了 JTA 事務(wù)。這意味著 XA 連接不支持 JDBC

的自動提交功能。同時,應(yīng)用程序一定不要對 XA 連接調(diào)用 java.sql.Connection.commit() 或者

java.sql.Connection.rollback() 。相反,應(yīng)用程序應(yīng)該使用 UserTransaction.begin()、

UserTransaction.commit() 和 serTransaction.rollback() 。

3、容器事務(wù)

容器事務(wù)主要是J2EE應(yīng)用服務(wù)器提供的,容器事務(wù)大多是基于JTA完成,這是一個基于JNDI的,相當(dāng)復(fù)雜的API實現(xiàn)。相對編碼實現(xiàn)JTA事

務(wù)管理,我們可以通過EJB容器提供的容器事務(wù)管理機制(CMT)完成同一個功能,這項功能由J2EE應(yīng)用服務(wù)器提供。這使得我們可以簡單的指定將哪個方

法加入事務(wù),一旦指定,容器將負責(zé)事務(wù)管理任務(wù)。這是我們土建的解決方式,因為通過這種方式我們可以將事務(wù)代碼排除在邏輯編碼之外,同時將所有困難交給

J2EE容器去解決。使用EJB CMT的另外一個好處就是程序員無需關(guān)心JTA API的編碼,不過,理論上我們必須使用EJB。

四、三種事務(wù)差異

1、JDBC事務(wù)控制的局限性在一個數(shù)據(jù)庫連接內(nèi),但是其使用簡單。

2、JTA事務(wù)的功能強大,事務(wù)可以跨越多個數(shù)據(jù)庫或多個DAO,使用也比較復(fù)雜。

3、容器事務(wù),主要指的是J2EE應(yīng)用服務(wù)器提供的事務(wù)管理,局限于EJB應(yīng)用使用。

五、總結(jié)

事務(wù)控制是構(gòu)建J2EE應(yīng)用不可缺少的一部分,合理選擇應(yīng)用何種事務(wù)對整個應(yīng)用系統(tǒng)來說至關(guān)重要。一般說來,在單個JDBC

連接連接的情況下可以選擇JDBC事務(wù),在跨多個連接或者數(shù)據(jù)庫情況下,需要選擇使用JTA事務(wù),如果用到了EJB,則可以考慮使用EJB容器事務(wù)。

如果滿意請及時~~,謝謝~

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

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

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

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

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

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

事務(wù)一般都是與數(shù)據(jù)庫操作相關(guān)的,直接使用JDBC的話,你可以通過設(shè)置是否自動commit,以及出異常后rollback來實現(xiàn)事務(wù),如果你使用spring、hibernate等框架,它都會提供相應(yīng)的事務(wù)配置。

java中的事務(wù)

如果你用Spring框架,Spring中可以實現(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ù)

}

本文名稱:java代碼中加事務(wù) java使用事務(wù)
瀏覽地址:http://www.yijiale78.com/article16/docjdgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈做網(wǎng)站網(wǎng)站改版品牌網(wǎng)站建設(shè)響應(yīng)式網(wǎng)站網(wǎng)站導(dǎo)航

廣告

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

小程序開發(fā)