- 浏览: 1560793 次
- 性别:
- 来自: 吉林
文章分类
- 全部博客 (624)
- C/C++ (33)
- Java (181)
- 网络相关 (7)
- 我爱篮球 (3)
- 也爱足球 (4)
- 杂谈 (1)
- 系统架构 (3)
- Web Service (14)
- Framework (3)
- 系统命令 (8)
- 管理平台相关 (8)
- 其它 (35)
- Websphere (1)
- Struts2 (24)
- Hibernate (16)
- Spring (23)
- javascript (20)
- jquery (23)
- html/css/div (28)
- 数据库 (40)
- JavaWeb (27)
- 设计模式 (2)
- 文档编写 (3)
- SVN (5)
- Ant (1)
- Maven (13)
- 软件项目管理 (8)
- AOP (1)
- kindeditor (1)
- JSON (2)
- Servlt/JSP (4)
- WordXML (2)
- XML (12)
- 面试相关 (7)
- Tomcat (11)
- 性能与调优 (29)
- 职业发展 (2)
- 操作系统 (7)
- AJAX (2)
- DWR (1)
- Eclipse (12)
- 持续集成 (3)
- 批处理命令 (1)
- Mozilla Rhino (2)
- 新鲜技术 (18)
- Apache mina (2)
- 底层技术 (18)
- Linux (22)
- 新鲜技术,IT历史 (1)
- 敏捷开发 (1)
- 版本控制 (5)
- 较火技术 (7)
- 集群 (2)
- Web前端 (13)
- 报表工具 (3)
- 网站架构 (5)
- 大数据 (8)
- 分布式存储 (5)
- 云计算 (8)
- TCP/IP协议 (1)
- 负载均衡 (3)
- 硬件 (1)
- 表现层技术 (3)
- Velocity (3)
- jvm (6)
- 并发编程 (10)
- hadoop (8)
- 数据结构和算法 (12)
- 计算机原理 (1)
- 测试驱动开发-TDD (3)
- 开发技巧 (1)
- 分词器 (1)
- 项目构建工具 (2)
- JMX (4)
- RMI (1)
- 测试技术 (22)
- 网络完全 (1)
- Git (4)
- apache开源包 (4)
- Java常用 (1)
- mock (2)
- OSGi (2)
- MongoDB (1)
- JBPM (1)
- Storm (3)
- mysql (2)
- telnet (1)
- 正则表达式 (1)
- bootstrap (4)
- Apache ActiveMQ (1)
- redis (9)
- Nginx (2)
- rsync+inotify文件同步 (2)
- testng (1)
- 原型设计工具 (1)
- 工程能力 (1)
- 风险控制 (3)
- ibatis (1)
- 分布式 (4)
- 安全技术 (1)
- 计算机基础 (4)
- 消息中间件 (1)
- UML (2)
最新评论
-
u012236967:
java命令执行jar包(里面的main函数)的方式(包括依赖其它的jar包问题) -
世界尽头没有你:
Selenium自动化测试从入门到精通(Java版)百度网盘地 ...
自动化测试工具 Selenium WebDriver 入门教程(针对主流浏览器) -
小小西芹菜:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
dwr实现Reverse Ajax推送技术的三种方式 -
hellozhouqiao:
楼主,请教一点问题.现在我们需要在excel 的页脚里面加上图 ...
FreeMaker + xml 导出word(处理目录,图片和页眉页脚问题) -
乱在长安:
使用Timer会有各种各样的问题好嘛?!书上推荐使用Sched ...
DelayQueue (ScheduledThreadPoolExecutor调度的实现)
基本上,事务代表了工作的一个逻辑单位。因为数据库的主要责任是保存信息,它需要有某种方法让用户可以指出当前的程序状态应该保存。同样地,当事情出错时,需要有一种方法来指出数据库应该忽略当前的状态而回到前面保存的程序状态。在数据库技术中,这些功能被称为事务。为了完成这些任务,JDBC API 包括了两个方法作为 Connection 接口的一部分。若将 Connection 对象名称指定为 conn,通过调用 conn.commit()。可以保存程序状态;通过调用 conn.rollback(); 可以返回到以前保存的状态。如果数据库实际运行操作时有错误发生,这两个方法都会抛出 SQLExceptions,所以您需要在 try ... catch 块中包装它们。
事务的级别
您可能想知道,为什么不是所有事务都运行在 TRANSACTION_SERIALIZABLE 模式以保证最高程度的数据完整性呢?和处理多线程编程有关的问题相似,事务保护的级别越高,性能损失就越大。 假定您的数据库和 JDBC 驱动程序支持这个特性,则给定一个 Connection 对象,您可以明确地设置想要的事务级别: conn.setTransactionLevel(TRANSACTION_SERIALIZABLE) ; 您还可以确定当前事务的级别: if(conn.getTransactionLevel() == TRANSACTION_SERIALIZABLE) { System.out.println("Highest Transaction Level in operation.") ; } 事务和批处理 缺省情况下,JDBC 驱动程序运行在被称为自动提交(AutoCommit)的模式下。在这个模式下,发送到数据库的所有命令运行在它们自己的事务中。虽然这用起来很方便,但它带来了性能损失,因为事务需要一定数量的开销来作适当地设置。如果您想能够明确地控制提交和回滚,就需要用下面的语句禁用自动提交模式(我们仍然认为你声明的Connection对象为conn): conn.setAutoCommit(false); 你也可以确认当前是否是自动提交模式: if(conn.getAutoCommit() == true){ System.out.println("Auto Commit Mode"); }else{ System.out.println("Not Auto Commit Mode"); } 很多数据库支持批处理操作,在批处理操作中通过在一次单独的操作(或批处理)中执行多个数据库更新操作,开销可被最小化。批处理操作在 JDBC 2.0 中被引入,它要求事务不处于自动提交模式。我们还是来看代码: conn.setAutoCommit(false) ; Statement stmt = conn.createStatement() ; stmt.addBatch("INSERT INTO people S('jerrykey', 123, 123, 123)") ; stmt.addBatch("INSERT INTO people S('Kaede', 123, 123, 123)") ; stmt.addBatch("INSERT INTO people S('kissjava', 123, 123, 123)") ; int[] updateCounts = stmt.executeBatch() ; con.commit() ; 注意,executeBatch() 方法返回一个更新计数的数组,每个值对应于批处理操作的一个命令。关于批处理操作的最后一个问题是,它们可能抛出一个类型为 BatchUpdateException 的新的异常,这个异常说明批处理操作中至少有一条命令失败了。这样,您就需要在try...catch...块中包含他们。 使用存储点进行严密的事务控制 从 JDBC 3.0 API 开始,增加了一个与事务相关的新的接口元素。这个接口引入了储存点的概念。储存点在数据库应用程序中提供了专门的标记,当调用回滚方法的时候它可以作为参数使用。因此,使用 JDBC 3.0 API 的话,现在就可能在开始复杂的数据库交互之前设置储存点,并根据结果提交整个事务,或者回滚到储存点,将应用程序返回到一个已知的状态。 要设置存储点,请参考一下代码: Savepoint savePoint = conn.setSavepoint("savepoint"); 这样你就创建了一个名字为savepoint的存储点。要回滚到一个给定的存储点,只需将想要的 Savepoint 对象作为参数传送到回滚方法即可。例如,我们想回滚到savepoint存储点: conn.rollback(savePoint); 而你不想再用存储点的时候,可以释放他们: conn.releaseSavepoint(savePoint); 注意,当您提交或回滚一个事务时,根据确切的顺序和操作的类型,任何已创建的存储点都可能变成无效的。请参考 JDBC 3.0 API 规范或您的驱动程序手册以了解更多信息。 |
来自:
http://hi.baidu.com/victorlin23/blog/item/6be754f2d508b314b07ec5a1.html
发表评论
-
Java SE7新特性之二进制字面量
2016-12-14 22:53 791Java SE 7中, 整数类型(byte, shor ... -
浮点数为什么不精确?为什么银行的金额不能用浮点数计算
2016-12-14 22:52 1951浮点数为什么不精确? 其实这句话本身就不精确, 相对精确一 ... -
计算机是如何计算乘法除法的(实际上都是转换为二进制加法计算)
2016-12-14 22:46 6583http://blog.csdn.net/blues1021 ... -
什么是补码、反码、负数在计算中如何表示
2016-12-14 22:39 873负数在计算机中如何表 ... -
Math.abs()绝对值取到的数不一定是正数
2016-12-14 22:37 1209Math.abs() 注释:Note that if th ... -
用BigInteger实现大素数生成算法
2016-12-06 16:42 1790转自:http://www.cnblogs.co ... -
加密(AES)、公私钥(PKI)、摘要(DIGEST)、签名(SIGNATURE)、证书(CERT)的形象解释和组合用法
2016-09-15 18:19 92751.鲍勃有两把钥匙,一把是公钥,另一把是私钥。 ... -
RSA加密公私钥生成工具(openssl)
2016-09-15 13:00 1135https://www.openssl.org/source/ ... -
RPC原理详解
2016-06-23 20:47 540RPC 功能目标 RPC 的主要功能目标是让构建分布式计算 ... -
Java并发之CountDownLatch、CyclicBarrier和Semaphore
2016-06-23 20:36 1367这次说一下 JUC 中的同步器三个主要的成员:CountDo ... -
线程间协作的两种方式:wait、notify、notifyAll和Condition
2016-06-23 20:35 525在前面我们将了很多关于同步的问题,然而在现实中,需要线程之 ... -
spring中bean使用parent属性来减少配置
2016-05-30 14:53 2407在基于spring框架开发的项目中,如果有多个bean都是一 ... -
事务相关内容详解(Spring、java)
2016-05-18 14:28 983Spring的事务传播性与隔离级别 一、事务的四个特 ... -
Spring事务传播机制与隔离级别
2016-05-18 13:47 10234转自:http://blog.csdn.net ... -
使用TransactionTemplate 编程式控制事务
2016-04-25 10:27 3518http://wzhw2008.iteye.com/blog ... -
The final local variable xxx cannot be assigned, since it is defined in an enclo
2016-04-24 17:42 1549本文就自己编程时候遇到的一个问题,简要描述一下,并提出解决 ... -
一个奇葩的excel中无法trim的“空格”的问题
2016-03-29 16:21 1877太奇怪了。打印出来的命名是空格,就是 trim() 不管用。 ... -
List深度复制
2016-02-17 09:34 2631昨天弄了一个类似List<Map<String, ... -
Eclipse导入 jar 源码乱码问题
2015-12-15 19:43 833http://blog.csdn.net/laiwenqian ... -
Java高并发编程的各种陷阱
2015-07-25 17:49 965www.iteye.com/blogs/subjects/ja ...
相关推荐
两个项目,一个项目是基于spring jdbc实现的分布式事务,一个是基于spring hibernate的分布式事务,hibernate项目里的applicationContext2.xml是基于mysql和mssql, applicationContext3.xml基于两个mssql, ...
spring mvc + spring + hibernate 全注解整合开发视频教程 11
SpringJDBC事物SpringJDBC事物SpringJDBC事物SpringJDBC事物SpringJDBC事物SpringJDBC事物SpringJDBC事物SpringJDBC事物
spring整合jdbc的配置 spring jdbc 配置
jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和...
spring.jar spring-aop.jar spring-aop.jar spring-beans.jar spring-hibernate3.jar spring-jdbc.jar spring-struts.jar spring-web.jar
12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1 系统概述 13.2 需求分析 13.2.1 系统用例图 ...
◆操作的对象不同:JDBC操作的是数据,将数据通过SQL语句直接传送到数据库中执行,Hibernate操作的是持久化对象,由底层持久化对象的数据更新到数据库中。 ◆数据状态不同:JDBC操作的数据是“瞬时”的,变量的值...
有关Struts2+Spring+Hibernate和Struts2+Spring+Ibatis的整合实例demo 原创,完全基于eclipse开发
这是本人上课过程中为学生讲解hibernate、spring和mysql开发简单项目的截图汇集,大家需要先自己完成数据库以及JDBC数据源的配置,之后按照该截图的顺序就能完成一个最简单的支持数据库事务处理的SH系统,(如果使用...
JDBC规范 java.sql和javax.sql两个包中的类与接口(天龙八部): DataSource:数据源 DriverManager:驱动管理 Driver:JDBC驱动 Connection:数据库连接 Statement:语句,执行SQL PrepareStatement:...
struts2.16 spring2.56 hibernate3.2 sqljdbc4 完整jar包 资源不好找,大家收藏好,别忘记评论。
12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1 系统概述 13.2 需求分析 13.2.1 系统用例图 ...
整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.20 + Spring4.1.6 + Hibernate4.3.9。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...
Spring+Spring MVC+Spring JDBC+MySql实现简单登录注册
NULL 博文链接:https://zhaoshijie.iteye.com/blog/910464
MySQL JDBC配置参数说明
Spring Data JDBC API。 Spring Data JDBC 开发文档。 官网 Spring Data JDBC API
一个关于ssha最基础的集合的例子,还用到了json。这个小项目用到了struts,spring,hibernate,异步刷新(ajax),json等技术。如果你刚接触这几个框架,或是想尝试结合这几个框架,那这个项目对你来说很有用。
12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1 系统概述 13.2 需求分析 13.2.1 系统用例图 ...