`

采用编程式事务

阅读更多
采用编程式事务
1、getCurrentSession()与openSession()的区别?
 * 采用getCurrentSession()创建的session会绑定到当前线程中,而采用openSession()
   创建的session则不会
 * 采用getCurrentSession()创建的session在commit或rollback时会自动关闭,而采用openSession()
   创建的session必须手动关闭
  
2、使用getCurrentSession()需要在hibernate.cfg.xml文件中加入如下配置:
 * 如果使用的是本地事务(jdbc事务)
 <property name="hibernate.current_session_context_class">thread</property>
 * 如果使用的是全局事务(jta事务)
 <property name="hibernate.current_session_context_class">jta</property>    
 
 

1、声明式事务配置
 * 配置SessionFactory
 * 配置事务管理器
 * 事务的传播特性
 * 那些类那些方法使用事务
2、编写业务逻辑方法
 * 继承HibernateDaoSupport类,使用HibernateTemplate来持久化,HibernateTemplate是
   Hibernate Session的轻量级封装
 * 默认情况下运行期异常才会回滚(包括继承了RuntimeException子类),普通异常是不会滚的
 * 编写业务逻辑方法时,最好将异常一直向上抛出,在表示层(struts)处理
 * 关于事务边界的设置,通常设置到业务层,不要添加到Dao上 
3、了解事务的几种传播特性
 1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务。如果没有事务则开启
 2. PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行
 3. PROPAGATION_MANDATORY: 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。
 4. PROPAGATION_REQUIRES_NEW: 总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。
 5. PROPAGATION_NOT_SUPPORTED: 总是非事务地执行,并挂起任何存在的事务。
 6. PROPAGATION_NEVER: 总是非事务地执行,如果存在一个活动事务,则抛出异常
 7. PROPAGATION_NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中. 如果没有活动事务,
      则按TransactionDefinition.PROPAGATION_REQUIRED 属性执行
4、Spring事务的隔离级别
 1. ISOLATION_DEFAULT: 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.
      另外四个与JDBC的隔离级别相对应
 2. ISOLATION_READ_UNCOMMITTED: 这是事务最低的隔离级别,它充许令外一个事务可以看到这个事务未提交的数据。
      这种隔离级别会产生脏读,不可重复读和幻像读。
 3. ISOLATION_READ_COMMITTED: 保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据
 4. ISOLATION_REPEATABLE_READ: 这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。
      它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了避免下面的情况产生(不可重复读)。
 5. ISOLATION_SERIALIZABLE 这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。
      除了防止脏读,不可重复读外,还避免了幻像读。
分享到:
评论

相关推荐

    MyBatis Spring声明式事务管理示例代码

    而且编程式事务管理会造成事务管理代码和被管理的代码耦合,不符合软件工程中“高内聚、低耦合”的要求。若采用AOP,则可以避免以上缺陷。 作者博客的示例代码:http://legend2011.blog.51cto.com/3018495/1239139。

    实验 spring 声明事务

    Java高级编程 实验报告 spring 声明事务 实验目的 掌握spring 声明式事务管理配置 实验环境 本实验采用本实验采用的eclipse或者 Myeclpse开发工具。Spring 4.0以上 Jdk1.7以上、oracle/mysql。

    Access+2000中文版高级编程

    Access2000中文版高级编程 目录 第一部分 编程基础 1 第1章 宏与代码 3 1.1 何时使用代码代替宏 4 1.1.1 何时用宏 4 1.1.2 何时用代码 4 1.2 宏到代码的转换 5 1.2.1 使用DoCmd对象 5 1.2.2 与宏...

    Access 2000中文版高级编程(part1)

    Access2000中文版高级编程 目录 第一部分 编程基础 1 第1章 宏与代码 3 1.1 何时使用代码代替宏 4 1.1.1 何时用宏 4 1.1.2 何时用代码 4 1.2 宏到代码的转换 5 1.2.1 使用DoCmd对象 5 1.2.2 与宏命令等价...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    该资料是《Oracle SQL高级编程》的源代码 对应的书籍资料见: Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐) 基本信息 原书名: Pro Oracle SQL 原出版社: Apress 作者: (美)Karen Morton Kerry ...

    HTML网站源码-律师事务业务咨询网页模板-响应式源码.zip

    它采用了前沿的HTML5和CSS3技术,实现了响应式设计,能够无缝适配各种设备的屏幕尺寸。此外,它还内置了丰富的JavaScript插件,助您轻松实现各种复杂的交互效果。这套源代码文件具有极高的可定制性,您可以根据您的...

    HTML网站源码-建筑工程设计事务所网页模板-响应式源码.zip

    它采用了前沿的HTML5和CSS3技术,实现了响应式设计,能够无缝适配各种设备的屏幕尺寸。此外,它还内置了丰富的JavaScript插件,助您轻松实现各种复杂的交互效果。这套源代码文件具有极高的可定制性,您可以根据您的...

    全管C5-OA协同办公系统

    同时由于采用新技术带来的效率提升,我们的个性化实施方案在时间和成本方面都大大优于传统编程二次开发方式。 体验式销售模式,让企业放心 我们为您提供了多种途径来全方位了解产品,除了在线的产品介绍资料以外,...

    第24次课-1 Spring与Hibernate的整合

    无论是编程式事务还是声明式事务,Spring都提供一致的编程模型。 24.3 Spring对Hibernate的简化 24.3.2 简化的具体表现 Spring对Hibernate的简化包括: 统一的异常处理机制。不再强制开发者在持久层捕捉异常,持久层...

    sqlserver概述

    在程 序设计方面:SQL Server 6.5采用了关键而新颖的对称式结构,从而简化了程序设计,并且 Microsoft在它的Visual Basic可视化编程语言中为程序员提供了良好的控件;在数据库管 理方面:SQL Server 6.5以一种易于...

    Employee-Performance-Evaluation-System:基于Java Web的响应式企业员工绩效考评系统的设计与实现

    该企业员工绩效考评系统就是在这样的背景下,针对企业的实际情况,采用响应式开发技术,并使用面向对象的编程模式编制而成的。本系统根据企业的一些日常管理事务,设计出符合公司绩效评估管理需求的应用软件。本论文...

    .Net.Framework3.5开发技术详解[中文][共二卷][PDF][VOL2]

    11.1 面向服务编程模型(框架) 261 11.1.1 什么是SOA 261 11.1.2 为什么要使用SOA 263 11.2 WCF是什么 264 11.3 WCF的结构 265 11.4 WCF基础 267 第12章 WCF中的契约 268 12.1 服务契约和操作契约 268 12.2 数据契约...

    单片机门禁系统设计.doc

    对于较大型的小区通信系统,可以采用域的管理方 式。 (1)cpu。节点的cpu采用工业级at89s52和neuron chip家族的tmpn3150b1af,3150芯片不带程序存储空间,因而需要外接外部ram,存放包 括lon talk协议、neuron c...

    高级计算机体系结构作业汇总(非标准答案).doc

    UMA 一致存储访问 采用集中式存储的模式,提供均匀的存储访问。 NUMA 非一致存储访问 内存模块局部在各个结点内部,所有局部内存模块构成并行机的全局内存模块。 COMA 全高速缓存存储访问 采用分布式存储模式,通过...

    Java语言的科学与艺术(国外计算机科学经典教材)

    本书采用现代面向对象方法,从零开始介绍最有用的类层次结构,全文使用图形和交互式程序,充分激发学生的学习兴趣。本书使用传记简介、引用以及哲学片段来突出计算的历史和理性背景,着重强调算法和问题解决,而今天...

    lagou-transfer:Spring框架大作业

    大作业:自定义@Service、@Autowired、@Transactional注解类,完成基于注解的IOC容器(Bean对象创建及依赖注入维护)和声明式事务控制,写到转账工程中,并且可以实现转账成功和转账异常时事务回滚 编程题: 自定义...

    Java+SSM+订餐系统

    Spring:作为整个项目的核心,Spring提供了轻量级的IoC(控制反转)和AOP(面向切面编程)容器,用于管理Bean和处理事务,简化了代码的配置和组织。 Spring MVC:负责处理前端请求和响应,采用MVC模式将应用分为模型...

    Kafractive是用于kafka管理的交互式CLI工具,构建于Spring Shell之上(95分以上课程大作业).zip

    它包括IoC(Inverse of Control,控制反转)容器、AOP(Aspect-Oriented Programming,面向切面编程)等特性,可以简化开发过程、提高代码的可维护性和可测试性。 2. Spring MVC框架:Spring MVC是基于Spring框架的...

    平台设计方案.docx

    在整个系统的设计上,在保证系统效率的前提下,将突出系统的开放式、标准化、模块化、易用实用、性能优化、可靠稳定等特点。 为充分保证系统在安全性、跨平台性、易扩展性、易维护性等方面的要求,建议采用先进的三...

Global site tag (gtag.js) - Google Analytics