当前位置:首页 » 密码管理 » 事务的访问

事务的访问

发布时间: 2022-09-03 18:58:44

Ⅰ 在java中,事务是什么有什么用!

一、什么是Java事务
通常的观念认为,事务仅与数据库相关。
事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性
(isolation)和持久性(rability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示

当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。持
久性表示已提交的数据在事务执行失败时,数据的状态都应该正确。
通俗的理解,事务是一组原子操作单元,从数据库角度说,就是一组sql指令,要么全部执行成功,若因为某个原因其中一条指令执行有错误,则撤销先前执行过的所有指令。更简答的说就是:要么全部执行成功,要么撤销不执行。
既然事务的概念从数据库而来,那Java事务是什么?之间有什么联系?
实际上,一个Java应用系统,如果要操作数据库,则通过JDBC来实现的。增加、修改、删除都是通过相应方法间接来实现的,事务的控制也相应转移到Java程序代码中。因此,数据库操作的事务习惯上就称为Java事务。
二、为什么需要事务
事务是为解决数据安全操作提出的,事务控制实际上就是控制数据的安全访问。具一个简单例子:比如银行转帐业务,账户A要将自己账户上的1000元
转到B账户下面,A账户余额首先要减去1000元,然后B账户要增加1000元。假如在中间网络出现了问题,A账户减去1000元已经结束,B因为网络中

断而操作失败,那么整个业务失败,必须做出控制,要求A账户转帐业务撤销。这才能保证业务的正确性,完成这个操走就需要事务,将A账户资金减少和B账户资
金增加方到一个事务里面,要么全部执行成功,要么操作全部撤销,这样就保持了数据的安全性。
三、Java事务的类型
Java事务的类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务。
1、JDBC事务
JDBC 事务是用 Connection 对象控制的。JDBC Connection 接口( java.sql.Connection )提供了两种事务模式:自动提交和手工提交。 java.sql.Connection 提供了以下控制事务的方法:
public void setAutoCommit(boolean)
public boolean getAutoCommit()
public void commit()
public void rollback()
使用 JDBC 事务界定时,您可以将多个 SQL 语句结合到一个事务中。JDBC 事务的一个缺点是事务的范围局限于一个数据库连接。一个 JDBC 事务不能跨越多个数据库。
2、JTA(Java Transaction API)事务
JTA是一种高层的,与实现无关的,与协议无关的API,应用程序和应用服务器可以使用JTA来访问事务。
JTA允许应用程序执行分布式事务处理–在两个或多个网络计算机资源上访问并且更新数据,这些数据可以分布在多个数据库上。JDBC驱动程序的JTA支持极大地增强了数据访问能力。
如果计划用 JTA 界定事务,那么就需要有一个实现 javax.sql.XADataSource 、
javax.sql.XAConnection 和 javax.sql.XAResource 接口的 JDBC
驱动程序。一个实现了这些接口的驱动程序将可以参与 JTA 事务。一个 XADataSource 对象就是一个 XAConnection
对象的工厂。 XAConnection s 是参与 JTA 事务的 JDBC 连接。
您将需要用应用服务器的管理工具设置 XADataSource 。从应用服务器和 JDBC 驱动程序的文档中可以了解到相关的指导。
J2EE 应用程序用 JNDI 查询数据源。一旦应用程序找到了数据源对象,它就调用 javax.sql.DataSource.getConnection() 以获得到数据库的连接。
XA 连接与非 XA 连接不同。一定要记住 XA 连接参与了 JTA 事务。这意味着 XA 连接不支持 JDBC
的自动提交功能。同时,应用程序一定不要对 XA 连接调用 java.sql.Connection.commit() 或者
java.sql.Connection.rollback() 。相反,应用程序应该使用 UserTransaction.begin()、
UserTransaction.commit() 和 serTransaction.rollback() 。
3、容器事务
容器事务主要是J2EE应用服务器提供的,容器事务大多是基于JTA完成,这是一个基于JNDI的,相当复杂的API实现。相对编码实现JTA事
务管理,我们可以通过EJB容器提供的容器事务管理机制(CMT)完成同一个功能,这项功能由J2EE应用服务器提供。这使得我们可以简单的指定将哪个方
法加入事务,一旦指定,容器将负责事务管理任务。这是我们土建的解决方式,因为通过这种方式我们可以将事务代码排除在逻辑编码之外,同时将所有困难交给
J2EE容器去解决。使用EJB CMT的另外一个好处就是程序员无需关心JTA API的编码,不过,理论上我们必须使用EJB。
四、三种事务差异
1、JDBC事务控制的局限性在一个数据库连接内,但是其使用简单。
2、JTA事务的功能强大,事务可以跨越多个数据库或多个DAO,使用也比较复杂。
3、容器事务,主要指的是J2EE应用服务器提供的事务管理,局限于EJB应用使用。
五、总结
事务控制是构建J2EE应用不可缺少的一部分,合理选择应用何种事务对整个应用系统来说至关重要。一般说来,在单个JDBC
连接连接的情况下可以选择JDBC事务,在跨多个连接或者数据库情况下,需要选择使用JTA事务,如果用到了EJB,则可以考虑使用EJB容器事务。

如果满意请及时采纳,谢谢~

Ⅱ 用Java编写一般应用程序,怎么实现在一个事务中访问了多种类型数据库。

我测试了用jdbc获得多个connection连接,可以实现,其实和连接一个数据库是一样的。
1、注册数据库驱动
2、用driverMagager获得数据库连接
3、获得connection之后就可以对数据库进行操作了

对于需求,其实也是比较容易实现的。只要对于多个要commit的地方,加到同一个try块中,就可以了。
只要一个数据库存储出错,就会跳出该try,之后再 catch中执行对所以数据库的rollback。
类似:
try{
以上对于数据库的操作代码略
.......................
conn1.commit();
conn2.commit();
conn3.commit();
//其中只要其中一个执行存储出错,就会跳到catch中,执行rollback,所以不要存储一个就commit一次,要一起commit 。
}catch(Exception e){
conn1.rollback();
conn2.rollback();
conn3.rollback();
}finall{
conn1.close();
conn2.close();
conn3.close();
}
主要就是对于执行成功的存储不要立刻就执行commit操作,这样如果之后的数据库出错就无法rollback成功的那个了。
我们等到所以对于数据库的操作都执行完毕后,再一起执行commit,如果其中那个出错也不至于过早的commit,而无法rollback了。

Ⅲ 在国际交往中,友好访问,正式访问,国事访问这几个都有哪些区别

友好访问一般是带私人性质的,比如社会团体之间的访问,两党之间,两个议会之间以及政要之间的非官方性质访问。
正式访问指一个过程的开始,不能区别另外两个,一般在接受邀请后,抵达邀请过开始到结束,这一个过程就是正式访问的过程。抵达之时就是正式访问的开始。
国事访问是国与国之间的正式交流。顾名思义,国家事务访问,这事带有明显官方性质的交流,一般由一国元首带队,代表团以国家机构官方代表为主,访问所涉及的内容也是两国之间所要讨论的国家大事。
再说白一点,友好访问就是一个国家出了国家元首出访以外的访问。
国家元首访问都属于国事访问。

Ⅳ 在数据库的事务管理中,什么是并发访问为什么要并发访问

并发访问是可能会发生两个用户同时对一张表的同一条数据进行修改等操作,这是可能发生的情况,不是故意要同时访问,所以没有为什么!

Ⅳ 事务的隔离级别是什么

数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。

1、Read uncommitted

读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。

2、Read committed

读提交,顾名思义,就是一个事务要等另一个事务提交后才能读取数据。

3、Repeatable read

重复读,就是在开始读取数据(事务开启)时,不再允许修改操作。

4、Serializable 序列化

Serializable 是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。

Ⅵ 事务隔离级别是什么

事务隔离级别是为了保证并发读取数据库中数据正确性而采用的一种策略。

事务隔离级别包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。

事务的隔离级别有四种级别,读取未提交内容,在该隔离级别,所有事务都可以看到其他未提交事务的执行结果、读取提交内容,这是大多数数据库系统的默认隔离级别。

可重读,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行、可串行化,这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突。

事务隔离的解决方法:

1、未授权读取的方法,也称为读未提交。该隔离级别可以通过“排他写锁”实现。

2、授权读取的方法,可以通过“瞬间共享读锁”和“排他写锁”实现。读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。

3、可重复读取,通过“共享读锁”和“排他写锁”实现。读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。

4、序列化的方式。它要求事务序列化执行,事务只能一个接着一个地执行,不能并发执行。

以上内容参考:网络-事务隔离级别

Ⅶ sql事务访问数据库多少次

一、跨数据库访问
第一种方式
SELECT * FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=远程ip;User ID=sa;Password=密码'
).库名.dbo.表名
WHERE 条件
第二种方式
在sql server组->服务->安全性->链接服务器下建立一个具有别名的链接服务器。然后通过以下方式访问:
SELECT * FROM [链接服务器名].库名.dbo.表名
WHERE 条件
需要注意的是建立链接数据库服务器类型如果选择“SQL server”,那么链接服务器名称必须用要链接的服务器的在网络中的机器名或IP,如果要使用其它别名,可以在WINDOWS\system32\drivers\etc\hosts文件里添加一个别名的映射。

解除SQL阻止(sqlserver 2005情况)
SQL Server 阻止了对组件 ‘Ad Hoc Distributed Queries’ 的 STATEMENT’OpenRowset/OpenDatasource’ 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 ‘Ad Hoc Distributed Queries’。有关启用 ‘Ad Hoc Distributed Queries’ 的详细信息,请参阅 SQL Server 联机丛书中的 “外围应用配置器”。
因为SQL2005默认是没有开启’Ad Hoc Distributed Queries’ 组件,开启方法如下
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO
关闭Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries', 0
reconfigure
exec sp_configure 'show advanced options', 0
reconfigure

二、分布式事务的配置

1.用DTCPing.exe工具测试两台机器的DTC服务是否可以联通。
2.如果有问题检查MSDTC服务是否启动。
3.MSDTC依赖于RPC,RPC使用的端口是135,测试135端口是否打开.是否有防火墙?如果有先关了防火墙. telnet IP 135 如果是关闭的打开它.
4.打开“控制面板->管理工具->组件服务”,然后展开“组件服务->计算机->我的电脑”右键属性。选择MSDTC的Tab栏,点击安全性配置按钮,打开窗口,将“网络DTC访问”选项选中,并将“允许远程客户端”,“允许入站”,“允许出站”都选中,并选择“不要求进行验证”,“启用事务Internet协议(TIP)事务”,“启用XA事务”都选中。然后确定即可。(以上选项windows默认不开放,必须配置)
5.检查你的两台服务器是否在同一个域中. 如果不在同一个域中,是否建立可信任联接.
6.如果是WIN2000,升级到SP4
7.确认MDAC版本是2.6以上,最好是2.8.
8.在SQL server存储过程中使用分布式事务时,必须SET XACT_ABORT ON --设置分布式事务如果发生问题主动回滚操作
9.可以声明使用BEGIN DISTRIBUTED TRANSACTION,如果未明确生明,在事务块中包含链接服务器的访问,SQL server会自动升级成分布式事务。

Ⅷ 事务处理时,是否就是实现了数据库的互斥访问

不一定,要看设置的事务的隔离级别及锁是什么类型。

Ⅸ 事务的隔离级别有几种

事务的隔离级别有以下几种:

1、第一种隔离级别:Read uncommitted (读未提交)

一个事务在写数据时,不允许另外一个事务进行写操作,但允许读操作。这样避免了更新丢失,却可能出现脏读,也就是说(事务A读到了事务B未提交的数据,事务B修改了内容后,又进行了回滚,那么此时事务A读取到的数据就成为了脏数据)。

解决了更新丢失,但还是可能会出现脏读。

2、第二种隔离级别:Read committed (读提交)

写事务提交之前不允许其他事务的读操作,可以解决脏读问题。但会出现一个事务范围内两个相同的查询却返回了不同数据(事务A,读取了数据后,事务B修改了数据并进行了提交,那么此时事务A再次读取时,就会出现数据不一致的情况),这就是不可重复读。

解决了更新丢失和脏读问题,但是可能出现不可重复读。

3、第三种隔离级别:Repeatable read(可重复读)

在开始读取数据(事务开启)时,不再允许修改操作,这样就可以在同一个事务内两次读到的数据是一样的,因此称为是可重复读隔离级别,但是有时可能会出现幻读。

(事务在操作过程中进行两次查询,第二次查询的结果包含了第一次查询中未出现的数据或者缺少了第一次查询中出现的数据(这里并不要求两次查询的SQL语句相同)。

这是因为在两次查询过程中有另外一个事务插入数据造成的。)

解决了更新丢失、脏读、不可重复读、但是还会出现幻读。

4、第四种隔离级别:Serializable(可序化)

要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行,如果仅仅通过“行级锁”是无法实现序列化的,必须通过其他机制保证新插入的数据不会被执行查询操作的事务访问到。

序列化是最高的事务隔离级别,同时代价也是最高的,性能很低,一般很少使用,在该级别下,事务顺序执行,不仅可以避免脏读、不可重复读,还避免了幻读。

热点内容
javacharacter 发布:2025-07-05 05:38:36 浏览:732
服务器pcid地址怎么看 发布:2025-07-05 05:35:40 浏览:382
安卓系统赚钱靠什么 发布:2025-07-05 05:28:06 浏览:158
编译不出来的原因 发布:2025-07-05 05:14:00 浏览:68
绝地求生国际服如何选择服务器 发布:2025-07-05 05:08:56 浏览:65
云服务器压力测试 发布:2025-07-05 05:00:28 浏览:373
成套设备易损配件清单怎么配置 发布:2025-07-05 04:55:43 浏览:295
c语言线性插值法 发布:2025-07-05 04:55:35 浏览:325
锂离子电池高温存储 发布:2025-07-05 04:54:55 浏览:342
我的世界如何关闭服务器公告栏 发布:2025-07-05 04:42:31 浏览:642