当前位置: 首页 > news >正文

重庆网站搭建方案/全国病毒感染最新消息

重庆网站搭建方案,全国病毒感染最新消息,360游戏,北欧做的比较好的网站Java事务1) 说到事务,不得不提的就是ACID特性,再次回顾: 原子性(atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。 一致性(consistency):在事务处理执行前后&#xff0c…

Java事务

1)       说到事务,不得不提的就是ACID特性,再次回顾:

Ø  原子性(atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。

Ø  一致性(consistency):在事务处理执行前后,数据库是一致的(数据库数据完整性约束)。

Ø  隔离性(isolcation):一个事务处理对另一个事务处理的影响。

Ø  持续性(durability):事务处理的效果能够被永久保存下来 。

2)       然后就是事务在Java中的最基本操作:

Ø  connection.setAutoCommit(false);//打开事务。

Ø  connection.commit();//提交事务。

Ø  connection.rollback();//回滚事务。

这里需要提的就是,当只想撤销事务中的部分操作时可使用SavePoint:

Ø  SavePoint sp = connection.setSavepoint();

Ø  connection.rollerbak(sp);connection.commit();

3)       下面用一个实例代码来展示一下:

packagecn.itcast.jdbc;

importjava.sql.Connection;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importjava.sql.Savepoint;

importjava.sql.Statement;

/**

* 事务测试

*/

publicclassSavePointTest {

publicstaticvoidmain(String[] args)throwsSQLException {

testTransaction();

}

staticvoidtestTransaction()throwsSQLException {

Connection conn = null;

Statement st = null;

ResultSet rs = null;

Savepoint sp = null;

try{

//获取Connection(JdbcUtils为自定义的包装类,这里不做解释)

conn = JdbcUtils.getConnection();

//开启事务

conn.setAutoCommit(false);

st = conn.createStatement();

//id为1的人的Money减10

String sql = "update user set money=money-10 where id=1";

st.executeUpdate(sql);

//********************回滚界限***************************

//设置回滚点(savepoint)

sp = conn.setSavepoint();

//********************回滚界限***************************

//id为2的人的Money减10

sql = "update user set money=money-10 where id=3";

st.executeUpdate(sql);

sql = "select money from user where id=2";

rs = st.executeQuery(sql);

floatmoney =0.0f;

if(rs.next()) {

money = rs.getFloat("money");

}

if(money >300){

thrownewRuntimeException("已经超过最大值!");

}

//id为2的人的Money加10

sql = "update user set money=money+10 where id=2";

st.executeUpdate(sql);

//提交事务

conn.commit();

} catch(RuntimeException e) {

if(conn !=null&& sp !=null) {

//回滚事务,注意里面的参数sp即为我们上面设置的savePoint,如果回滚的话只能回滚到savePoint以下的部分

//上面的部分不会得到回滚

conn.rollback(sp);

conn.commit();

}

throwe;

} catch(SQLException e) {

if(conn !=null)

conn.rollback();

throwe;

} finally{

//释放资源(JdbcUtils为自定义类)

JdbcUtils.free(rs, st, conn);

}

}

}

上面所有的操作(CRUD)都是在同一个数据源上的操作,无法处理跨多数据源(分布式)操作。跨多个数据源的事务就要使用JTA容器实现事务。根本思想就是“分成两阶段提交”,具体内容这里不做介绍。

javax.transaction.UserTransaction tx = (UserTransaction)ctx.lookup(“jndiName");

tx.begin();

//connection1 connection2 (可能来自不同的数据库)…

tx.commit();//tx.rollback();

隔离级别

1)      为了应对多线程并发读取数据时出现的问题,事务有了“隔离级别”特性,多线程并发读取数据一般会引发如下三个问题:

Ø  脏读(dirtyreads)

Ø  不可重复读(non-repeatablereads)

Ø  幻读(phantomread)

下面进行简要介绍:

Ø  脏读:一个事务读取了另一个未提交的并行事务写的数据。

Ø  不可重复读:一个事务重新读取前面读取过的数据, 发现该数据已经被另一个已提交的事务修改过。

Ø  幻读:一个事务重新执行一个查询,返回一套符合查询条件的行, 发现这些行因为其他最近提交的事务而发生了改变。

2)       为了处理上面的读数据问题,java事务提供了4种隔离级别,如下:

Ø  读未提交(Read uncommitted)

Ø  读已提交(Readcommitted)

Ø  可重复读(Repeatableread)

Ø  可串行化(Serializable)

3)       4种隔离级别与上面3个问题的对应关系如下:

1022def5e1bd47e1380e460f75cc338d.png

注意上面的“可能”二字。

4)       隔离级别的设定:

connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);

在代码中的应用:

15cb3eace439e838118e5899705f5195.png

总结

除了隔离级别,上面所有的东西在.net中相信大家都很熟悉。当然在八期的.net教务系统也用到了事务隔离级别这一点,当时自己还是初步接触,现在可以详细的学习,可以看到学习就是一个不断反复的过程。

http://blog.csdn.net/wang379275614/article/details/24818397

http://www.lbrq.cn/news/954649.html

相关文章:

  • 35云主机做网站对视频大小限制/沈阳seo技术
  • 大丰有没有做网站/适合小学生的新闻事件
  • 哪些网站做科技专题/怎么开发一个网站
  • 邯郸做网站找哪家好/最好用的手机优化软件
  • 如何制作wordpress模板下载/百度关键词seo优化
  • 云服务器品牌前十大排名/seo优化查询
  • 美国哪个网站做diy电脑版/网站推广软件免费
  • 建站教程的特点/开鲁seo服务
  • 中国制造网官网首页/昆明seo建站
  • 北京网站建设价格/手机端竞价恶意点击
  • 高州网站建设/seo推广软件代理
  • 建设团购网站/微信附近人推广引流
  • 营销型网站建设策划书/域名服务器ip地址查询
  • iis搭建网站时 属于默认文档的是/seo专业优化方法
  • 网站特效 素材/百度查重入口免费版
  • 网站建设需要学编程么/2023b站免费推广入口
  • 自己搭建一个网站/杭州网站seo推广
  • 石家庄做网站建设的公司哪家好/网站链接推广工具
  • 用vs做网站后台/桂平seo快速优化软件
  • 想开个视频网站该怎么做/在seo优化中
  • 手机网站建设平台合同/武汉seo网站优化运营
  • 虚拟主机wordpress多站点/百度指数搜索榜度指数
  • 浏阳网站建设tvshown/百度推广新手入门
  • 公安网站管理系统破解/网站建设深圳公司
  • 佛山做网站开发/成人编程培训机构排名前十
  • 门户系统大全/搜索排名优化
  • 网站建设标准 方案书/做网站用什么软件
  • 网站设计与建设/微信小程序平台官网
  • 凌晨三点播放的视频叫什么/网站优化建议怎么写
  • 河源网站建设/深圳债务优化公司
  • 【软件测试】从软件测试到Bug评审:生命周期与管理技巧
  • MySQL详解三
  • 从零搭建智能搜索代理:LangGraph + 实时搜索 + PDF导出完整项目实战
  • Kubernetes常用命令总结
  • 【c++】提升用户体验:问答系统的交互优化实践——关于我用AI编写了一个聊天机器人……(12)
  • 机器学习基础:线性回归算法详解(原理+代码+实战)