- 浏览: 455776 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
飞天奔月:
我来个简单点的代码 使用 LinkedHashSetpubli ...
ArrayList去重 -
飞天奔月:
public static <T> List< ...
ArrayList去重 -
aaron7524:
事务隔离级别 -
月陨殇:
wlh269 写道rswh110 写道lz内容写的不错,就是略 ...
事务隔离级别 -
lnx1824:
我的更奇怪,在本地静态的可以,放jetty里的页面后就不然,都 ...
JS得到上传图片尺寸
===============JDBC手动事务========================
===============Hibernate手动事务(需要手动开启,回滚和关闭事务)========================
===============Hibernate声明式事务管理========================
/** * 添加流向单 * @param flowCard */ public void addFlowCard(FlowCard flowCard) { //Connection conn = null; try { //~~~~~取得Connection~~~~~// conn = ConnectionManager.getConnection(); //~~~~~自动提交设置为false~~~~~// conn.setAutoCommit(false); //取得流向单号 String vouNo = flowCardDao.getVouNo(); flowCard.setVouNo(vouNo); //保存流向单主表 flowCardDao.addFlowCardMaster(flowCard); //保存流向单明细 flowCardDao.addFlowCardDetail(vouNo, flowCard.getFlowCardDetailList()); //~~~~~~~提交事务~~~~~~~~~~~// conn.commit(); }catch(AppException e) { if (e.getErrorCode() == ErrorInfo.ERROR_CODE_GEN_FLOW_CARD_VOU_NO || e.getErrorCode() == ErrorInfo.ERROR_CODE_SAVE_FLOWCARD_DETAIL || e.getErrorCode() == ErrorInfo.ERROR_CODE_SAVE_FLOWCARD_MASTER ) { throw new AppException("添加流向单失败!"); } }catch(Exception e) { e.printStackTrace(); try { //~~~~~~~事务回滚~~~~~~~~~~~// conn.rollback(); } catch (SQLException e1) { TODO Auto-generated catch block e1.printStackTrace(); } }finally { ConnectionManager.closeConnection(); } }
===============Hibernate手动事务(需要手动开启,回滚和关闭事务)========================
public class UserManagerImpl implements UserManager { Session session=null; Transaction tx=null; public void addUser(User user) { try{ //得到当前一个session然后放到threadLocale中,在事务关闭之前可以在项目的任何地方, //使用sessionFactory.getCurrentSession()得到该Session,不需要传递 session= HibernateUtils.getFactory().getCurrentSession(); //~~~~~得到事务对象~~~~~// tx=session.beginTransaction(); session.save(user); Log log=new Log(); log.setDate(new Date()); log.setDetails("XXXX做了什么XXXX"); log.setType("操作日志"); LogManager logManager=new LogManagerImpl(); logManager.addLog(log); //throw new java.lang.RuntimeException();//制造异常 //出现运行期异常,事务自动回滚,数据库没有添加记录 //~~~~~~~提交事务~~~~~~~~~~~// tx.commit(); }catch(Exception e){ e.printStackTrace(); //~~~~~~~事务回滚~~~~~~~~~~~// tx.rollback(); } } } public class LogManagerImpl implements LogManager { public void addLog( Log log) { HibernateUtils.getFactory().getCurrentSession().save(log); } }
===============Hibernate声明式事务管理========================
a. 用户管理类UserManagerImpl继承模板类HibernateDaoSupport public class UserManagerImpl extends HibernateDaoSupport implements UserManager { private LogManager logManager; public void addUser(User user) throws Exception { this.getHibernateTemplate().save(user); Log log = new Log(); log.setType("操作日志"); log.setDetails("xxx做了xxxxx"); log.setDate(new Date()); logManager.addLog(log); //throw new java.lang.RuntimeException();//制造异常 throw new Exception();//制造异常,普通异常,事务不回滚 } //注入LogManager public void setLogManager(LogManager logManager) { this.logManager = logManager; } } b.日志管理类LogManagerImpl继承模板类HibernateDaoSupport public class LogManagerImpl extends HibernateDaoSupport implements LogManager { public void addLog( Log log) { this.getHibernateTemplate().save(log); } } c. 事务管理配置 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <!-- 配置SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation" value="classpath:hibernate.cfg.xml"/> </bean> <!-- 配置事务管理器 --> <bean id="transactionMgr" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> <!-- 配置事务传播特性 --> <tx:advice id="txAdvice" transaction-manager="transactionMgr"> <tx:attributes> <tx:method name="add*" propagation="REQUIRED"/> <tx:method name="del*" propagation="REQUIRED"/> <tx:method name="update*" propagation="REQUIRED"/> <tx:method name="*" read-only="true"/> </tx:attributes> </tx:advice> <!-- 那些类使用事务 --> <aop:config> <aop:pointcut id="point-cut" expression="execution(* com.wlh.spring.manager.*.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="point-cut"/> </aop:config> </beans>
发表评论
-
java开发实战视频详解
2017-07-02 08:09 510java开发实战视频详解 链接: http://pan.bai ... -
mysql在window下备份
2013-02-03 09:25 1042命令:mysqldump –uroot –ppassword ... -
NoSQL非关系型数据库
2011-08-23 10:25 1500NoSQL(NoSQL = Not Only SQL ), ... -
Oracle 编码再回顾
2011-02-15 10:53 1157一、什么是Oracle字符集 ... -
位图索引与 B-tree 索引:选择与时间
2010-08-26 10:58 1575位图索引与 B-tree 索引:选择与时间 了解每个索引的正 ... -
Oracle的redo 和undo的区别
2010-07-28 15:33 1038redo--> undo-->datafile i ... -
Oracle归档模式与非归档模式设置
2010-07-16 16:14 1729Oracle的日志归档模式可以有效的防止instance和d ... -
比较牛逼的插入SQL语句
2010-06-02 10:22 1896MessageDaoImpl.java$saveMessa ... -
oracle的分析函数over 及开窗函数
2010-03-07 20:53 1079一:分析函数over Oracle从8.1.6开始提 ... -
Oracle Case 条件函数
2010-03-02 10:53 1301select dx.docid, case ... -
关于两表关联的update
2010-02-23 13:38 1701-- update 一个字段 update a ... -
oracle客户端编码修改
2010-02-04 12:15 1901从注册表修改:HKEY_LOCAL_MACHINE\SOFTW ... -
Oracle两个数据库间的数据同步 (DBLink 、计划任务)
2010-01-31 19:42 7263--配置本地数据库服务器的tnsnames.ora文 ... -
Oracle乱码最佳解决方案(JDK动态代理)
2010-01-18 17:29 4345该文章所解决的问题是Oracle下,乱码问题 描述: 1.库服 ... -
Oracle数据库字符集问题解析
2009-12-14 16:15 1034经常看到一些朋友问OR ... -
Oracle函数大全
2009-12-14 16:13 941SQL中的单记录函数 1.ASCII 返回与指定的字 ... -
导入导出
2009-11-10 09:50 928导入命令: 1.cmd进入命令行; (1)无连接登录o ... -
两种外连接
2009-10-26 13:54 950select cpxx.cp_xh, ... -
Oracle Blob (二进制文件的读写)
2009-10-18 23:16 6158import java.io.FileNotFoundEx ... -
Oracle时间操作
2009-08-21 16:04 967一.插入当前日期 //构造系统时间的字符串 Str ...
相关推荐
### 数据库事务总结 #### 一、事务的基本概念与特性 **事务**是数据库系统中的一个逻辑工作单元,它由一系列的操作组成,这些操作要么都完成,要么都不完成,以此来保证数据的一致性和完整性。 #### 二、事务的...
### Java事务总结 #### 事务的基本概念与属性 在计算机科学中,特别是在数据库管理系统中,**事务**是一种机制,用于确保一系列操作作为一个整体被执行。事务包含三个基本的行为:开始事务、提交事务以及回滚事务...
该文档从sqlserver事务讲起,详述ACID,@@trancount,在嵌套事务中使用保存点,命名事务等
然而,在实际开发过程中,经常会遇到一些关于Spring事务的问题,如事务失效、事务回滚、大事务问题以及编程式事务等。本文将深入探讨这些问题,并给出相应的解决方案。 #### 一、事务不生效的原因及解决办法 1. **...
分布式事务总结,包括了目前所知道的理论,二段三段saga协议。但没有包括一致性算法
事务的基本特征;事务的隔离级别;在数据库操作过程中很可能出现几种不确定的情况;不同的隔离级别对事务的处理;在选取数据库的隔离级别时,应该注意以下几个处理的原则:.锁,锁的特点,多个用户同时对数据库的并发...
编程式事务管理需要在代码中显式地开始、提交或回滚事务,而声明式事务管理则是通过在配置文件中声明事务规则,让Spring自动管理事务的生命周期,更加简洁和易于维护。 在给定的描述中,我们看到项目采用了SSH...
### Java事务处理总结 #### 一、什么是Java事务 事务是指一组操作的集合,这些操作要么全部成功,要么全部失败,以确保数据的一致性和完整性。在Java开发中,事务处理主要关注的是如何管理和控制对数据库的操作,...
总结来说,JDBC事务适用于单数据库、简单事务需求的场景,其API简洁,性能较好,但不具备分布式事务能力。而JTA事务则适用于需要跨数据库、复杂分布式事务的环境,虽然使用起来相对复杂,但能够保证大规模分布式系统...
Java事务处理是编程中确保数据一致性和完整性的关键机制,特别是在涉及数据库操作的场景下。事务处理遵循ACID原则,即原子性、一致性、隔离性和持久性。原子性确保事务作为一个不可分割的操作单元,要么全部执行,...
### 事务总结 - **Snapshot 隔离**:事务内部的查询始终看到事务开始时的数据,不受其他并发事务的影响。 - **MVCC 机制**:通过记录多个版本的文档,确保并发事务间的冲突检测和恢复。 理解这些核心原理和最佳...
### Java事务处理总结 在Java开发中,事务处理是一项非常重要的技术,它能够确保数据的一致性和完整性。本文将从多个角度对Java中的事务处理进行深入解析,帮助开发者更好地理解和运用这一技术。 #### 一、事务的...
本文将对三种不同的事务配置方式进行深入探讨:本地事务、全局事务以及结合动态数据源的事务管理。这些配置方式在处理多数据源和复杂业务场景时具有不同的优势和适用性。 首先,我们来看“本地事务”。本地事务通常...
总结来说,C#中的事务处理涉及到如何在单个数据库和分布式环境中确保数据的一致性。理解事务的基本原则,掌握C#中的事务管理工具和策略,以及熟悉处理分布式事务和异常情况的方法,对于任何从事数据库驱动的C#开发...
#### 五、总结 通过上述分析,我们可以看出Spring中的事务传播行为提供了丰富的选项,可以帮助开发者精确地控制事务的执行逻辑。正确理解和运用这些传播行为对于实现健壮、高效的事务管理至关重要。在实际开发中,...
1、详细介绍了Seata阿里分布式事务中间件; 2、对整个分布式事务解决方案原理进行了详细的分析,包括tcc、xa、saga等解决方案 3、IT老齐老师视频资料配套pdf;
在理解分布式事务专题之前,首先需要明确事务的基本概念。事务是一种机制,它保证了数据库操作的原子性、一致性、隔离性和持久性,也就是我们熟知的ACID属性。原子性(Atomicity)意味着事务中的所有操作要么全部...
sqlite3事务总结: 在connect()中不传入 isolation_level 事务处理: 使用connection.commit() #!/usr/bin/env python # -*- coding:utf-8 -*- '''sqlite3事务总结: 在connect()中不传入 isolation_level 事务处理: ...