- 浏览: 1591329 次
- 性别:
- 来自: 吉林
文章分类
- 全部博客 (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 831Java SE 7中, 整数类型(byte, shor ... -
浮点数为什么不精确?为什么银行的金额不能用浮点数计算
2016-12-14 22:52 2028浮点数为什么不精确? 其实这句话本身就不精确, 相对精确一 ... -
计算机是如何计算乘法除法的(实际上都是转换为二进制加法计算)
2016-12-14 22:46 6634http://blog.csdn.net/blues1021 ... -
什么是补码、反码、负数在计算中如何表示
2016-12-14 22:39 924负数在计算机中如何表 ... -
Math.abs()绝对值取到的数不一定是正数
2016-12-14 22:37 1271Math.abs() 注释:Note that if th ... -
用BigInteger实现大素数生成算法
2016-12-06 16:42 1875转自:http://www.cnblogs.co ... -
加密(AES)、公私钥(PKI)、摘要(DIGEST)、签名(SIGNATURE)、证书(CERT)的形象解释和组合用法
2016-09-15 18:19 94231.鲍勃有两把钥匙,一把是公钥,另一把是私钥。 ... -
RSA加密公私钥生成工具(openssl)
2016-09-15 13:00 1195https://www.openssl.org/source/ ... -
RPC原理详解
2016-06-23 20:47 582RPC 功能目标 RPC 的主要功能目标是让构建分布式计算 ... -
Java并发之CountDownLatch、CyclicBarrier和Semaphore
2016-06-23 20:36 1417这次说一下 JUC 中的同步器三个主要的成员:CountDo ... -
线程间协作的两种方式:wait、notify、notifyAll和Condition
2016-06-23 20:35 580在前面我们将了很多关于同步的问题,然而在现实中,需要线程之 ... -
spring中bean使用parent属性来减少配置
2016-05-30 14:53 2441在基于spring框架开发的项目中,如果有多个bean都是一 ... -
事务相关内容详解(Spring、java)
2016-05-18 14:28 1023Spring的事务传播性与隔离级别 一、事务的四个特 ... -
Spring事务传播机制与隔离级别
2016-05-18 13:47 10326转自:http://blog.csdn.net ... -
使用TransactionTemplate 编程式控制事务
2016-04-25 10:27 3648http://wzhw2008.iteye.com/blog ... -
The final local variable xxx cannot be assigned, since it is defined in an enclo
2016-04-24 17:42 1601本文就自己编程时候遇到的一个问题,简要描述一下,并提出解决 ... -
一个奇葩的excel中无法trim的“空格”的问题
2016-03-29 16:21 1944太奇怪了。打印出来的命名是空格,就是 trim() 不管用。 ... -
List深度复制
2016-02-17 09:34 2688昨天弄了一个类似List<Map<String, ... -
Eclipse导入 jar 源码乱码问题
2015-12-15 19:43 881http://blog.csdn.net/laiwenqian ... -
Java高并发编程的各种陷阱
2015-07-25 17:49 1009www.iteye.com/blogs/subjects/ja ...
相关推荐
总的来说,Hibernate的启动过程涉及多个核心类和接口的协作,从配置文件的读取解析到`SessionFactory`的创建,每一步都至关重要,深刻理解这一流程对于掌握Hibernate框架的应用和优化具有重要意义。
JDBC datasources及其它相关的资源,进行完整的事务管理和异常的包装,在此用了Spring的事物模板(TransactionTemplate)实现,可分离数据访问和事物处理,提高业务对象的可复用性,采用getHibernateTemplate()方法...
JDBC datasources及其它相关的资源,进行完整的事务管理和异常的包装,在此用了Spring的事物模板(TransactionTemplate)实现,可分离数据访问和事物处理,提高业务对象的可复用性,采用getHibernateTemplate()方法...
JDBC datasources及其它相关的资源,进行完整的事务管理和异常的包装,在此用了Spring的事物模板(TransactionTemplate)实现,可分离数据访问和事物处理,提高业务对象的可复用性,采用getHibernateTemplate()方法...
Struts2以核心控制器FilterDispatcher为基础,包含了框架内部的控制流程和处理机制。 Hibernate工作原理,Hibernate数据持久化? 答:Hibernate工作原理: 1:读取并解析映射信息,创建SessionFactory 2:打开...
1. **网络运营支撑系统**:参与开发了基于Tomcat的J2EE系统,使用Struts、Hibernate和Spring技术,与Oracle 9i数据库配合,实现了用户管理、管理员管理等功能。系统通过Socket与Unix服务器通讯,实现信息同步。 2. ...
7. **异常处理**:理解异常的分类,何时抛出异常,如何进行有效捕获和处理,以及自定义异常的使用。 8. **设计模式**:工厂模式、单例模式、装饰器模式、代理模式等23种设计模式,理解它们的应用场景和优缺点。 9....
面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....
虽然这部分与Java面试题集不直接相关,但它可能包括C++的基础知识,如指针、内存管理等,对于理解某些底层机制可能有所帮助。 ### 十、Weblogic及其它 这部分可能涉及特定于Weblogic应用服务器的知识点,以及其他...
8. spring如何实现事物管理的。 Spring提供了多种事务管理机制,例如使用@Transactional注解或使用PlatformTransactionManager接口。 9. springIOC。 Spring IOC是Spring框架的核心组件,提供了依赖注入和控制反转...