`
xgbjmxn
  • 浏览: 269820 次
  • 性别: Icon_minigender_1
  • 来自: 新乡
社区版块
存档分类
最新评论

Hibernate事务全面介绍

阅读更多
    *
      Hibernate事务全面介绍
    * http://developer.51cto.com  2009-09-23 17:41  佚名  比特网  我要评论(0)

      这里介绍Hibernate事务处理机制基于JDBC Transaction.我们也可以通过配置文件设定采用JTA作为事务管理实现。

      Hibernate有很多值得学习的地方,这里我们主要介绍Hibernate事务,包括介绍在sessionFactory.openSession()中,Hibernate会初始化数据库连接等方面。

      Hibernate是JDBC的轻量级封装,本身并不具备事务管理能力。在事务管理层,Hibernate将其委托给底层的JDBC或者JTA,以实现事务管理和调度功能。

      Hibernate事务处理机制基于JDBC Transaction.我们也可以通过配置文件设定采用JTA作为事务管理实现:

         1. <hibernate-configuration>
         2. <session-factory>
         3. …… 
         4. <property name="hibernate.transaction.factory_class">
         5. net.sf.hibernate.transaction.JTATransactionFactory 
         6. <!--net.sf.hibernate.transaction.JDBCTransactionFactory-->
         7. </property>
         8. …… 
         9. </session-factory>
        10. </hibernate-configuration>

      基于JDBC的事务管理将事务管理委托给JDBC 进行处理无疑是最简单的实现方式,Hibernate事务对于JDBC事务的封装也极为简单。
      我们来看下面这段代码:

         1. session = sessionFactory.openSession(); 
         2. Transaction tx = session.beginTransaction(); 
         3. …… 
         4. tx.commit();

      从JDBC层面而言,上面的代码实际上对应着:

         1. Connection dbconn = getConnection(); 
         2. dbconn.setAutoCommit(false); 
         3. …… 
         4. dbconn.commit();

      就是这么简单,Hibernate并没有做更多的事情(实际上也没法做更多的事情),只是将这样的JDBC代码进行了封装而已。

      这里要注意的是,在sessionFactory.openSession()中,hibernate会初始化数据库连接,与此同时,将其 AutoCommit 设为关闭状态(false)。而其后,在Session.beginTransaction 方法中,Hibernate 会再次确认Connection 的AutoCommit 属性被设为关闭状态( 为了防止用户代码对session 的Connection.AutoCommit属性进行修改)。

      这也就是说,我们一开始从SessionFactory获得的session,其自动提交属性就已经被关闭(AutoCommit=false),下面的代码将不会对数据库产生任何效果:

         1. session = sessionFactory.openSession(); 
         2. session.save(user); 
         3. session.close();

      这实际上相当于 JDBC Connection的AutoCommit属性被设为false,执行了若干JDBC操作之后,没有调用commit操作即将Connection关闭。如果要使代码真正作用到数据库,我们必须显式的调用Transaction指令:

         1. session = sessionFactory.openSession(); 
         2. Transaction tx = session.beginTransaction(); 
         3. session.save(user); 
         4. tx.commit(); 
         5. session.close();

      【编辑推荐】
         1. 描述Hibernate检查id字段
         2. Hibernate Template简单描述
         3. Hibernate DetachedCriteria学习经验
         4. 概述Hibernate equals()方法
         5. Hibernate使用Person对象
      【责任编辑:志京 TEL:(010)68476606】

原文:Hibernate事务全面介绍
    标 签:  Hibernate事务

上一篇: Hibernate的优点全解 下一篇: Hibernate事务管理机制剖析
网友评论
查看所有评论(0)
通行证: 密码:   注册通行证
发表评论请注意语言文明

验证码: 请点击后输入验证码 点击图片可刷新验证码 匿名发表

分享到:
评论

相关推荐

    Spring Hibernate事务实例

    2. Hibernate事务管理:使用`HibernateTransactionManager`结合SessionFactory进行事务控制。 3. AOP(面向切面编程)在事务管理中的应用:`TransactionInterceptor`基于AOP拦截方法调用,处理事务。 4. 配置事务...

    Hibernate缓存与spring事务详解

    而Spring框架则以其全面的功能,包括依赖注入、AOP(面向切面编程)以及事务管理,成为企业级应用的首选。本篇文章将深入探讨Hibernate的缓存机制和Spring的事务管理,以帮助开发者更好地理解和利用这两个强大的工具...

    第二部分spring+hibernate+jta 分布式事务Demo

    本示例“第二部分spring+hibernate+jta 分布式事务Demo”将帮助我们理解如何在这三个框架之间协同工作,实现高效且可靠的事务管理。 首先,让我们深入了解一下这三个组件: 1. **Spring**:这是一个全面的Java应用...

    spring3+hibernate4配置声明式事务管理(annotation方式)

    1. **Spring框架**:Spring是一个全面的后端开发框架,它提供了诸如依赖注入、AOP(面向切面编程)、事务管理等核心特性。在本实例中,Spring主要负责事务管理和与Hibernate的集成。 2. **Hibernate框架**:...

    hibernate(api_介绍)

    Hibernate 是一个强大的 ...总之,Hibernate API 提供了全面的工具集,让开发者能够高效地处理数据库操作,同时通过扩展接口支持数据库独立性,增强了灵活性和可维护性。理解并熟练使用这些接口是掌握Hibernate的关键。

    spring,struts,hibernate,事务配置

    Spring是一个全面的后端应用程序框架,提供了依赖注入、AOP(面向切面编程)、事务管理等功能。Struts则是一个MVC(模型-视图-控制器)框架,主要处理Web层的逻辑。Hibernate是一个ORM(对象关系映射)工具,它使得...

    Spring与Hibernate集成---声明式事务

    本文将深入探讨如何将Spring与Hibernate进行集成,并重点介绍声明式事务的配置与使用。 Spring框架是一个全面的企业级应用开发框架,它提供依赖注入(DI)和面向切面编程(AOP)等功能,简化了Java应用的复杂性。另...

    hibernate非常全面总结文档

    总结,Hibernate 全面涵盖了对象关系映射、配置管理、数据库连接池、事务处理、持久化上下文和缓存机制等多个方面,是 Java 开发者处理数据库操作的强大工具。理解和掌握这些知识点,对于提升 Java 应用程序的开发...

    spring,struts,hibernate,事务

    Hibernate支持JDBC事务和JTA(Java Transaction API)事务,可以与Spring的事务管理机制集成,实现统一的事务策略。 在SSH事务配置中,提到的“通用性”是指通过合理配置,可以将事务管理应用到多个DAO(数据访问...

    hibernate 全面中文帮助 CHM文档

    **Hibernate 框架全面解析** Hibernate 是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了方便的数据持久化服务,将数据库操作转换为对Java对象的操作,从而简化了开发过程。这个CHM文档集合包含了丰富的...

    hibernate学习资料大全

    以上只是压缩包中部分可能包含的知识点,实际学习资料可能包括教程文档、示例代码、实战项目等,通过深入学习和实践,开发者可以全面掌握Hibernate的精髓,并将其应用到实际开发中,提高开发效率,降低维护成本。...

    Hibernate Hibernate5 讲义 PDF

    北京动力节点教育培训公司提供的Hibernate5讲义,不仅对Hibernate框架进行了全面的介绍,而且通过实例演示了如何使用Hibernate进行基本的数据库操作。该讲义涵盖了Hibernate的基本技术、配置方法以及如何开发一个...

    Spring2.0+Hibernate3.1的事务管理

    本文将详细探讨"Spring2.0+Hibernate3.1的事务管理"这一主题,以及如何结合这两个框架来实现高效、可靠的事务处理。 首先,Spring 2.0是一个全面的Java企业级应用开发框架,它提供了依赖注入(DI)和面向切面编程...

    Beginning Hibernate: For Hibernate 5

    - **构建事务型应用**: 学习如何利用 Hibernate 构建能够处理复杂数据的企业级 Java 应用程序。 - **现代构建流程**: 了解在当前环境中如何有效地使用 Hibernate 进行开发。 - **Java 8 特性**: 掌握 Java 8 新特性...

    struts2.2.3+spring2.5+hibernate3.2事务

    Spring2.5作为一款强大的轻量级框架,提供了全面的事务管理功能,支持编程式和声明式事务管理。编程式事务管理允许开发者在代码中显式地开始、提交或回滚事务,而声明式事务管理则通过配置来定义哪些方法需要在事务...

    Hibernate 中文api 等学习资料

    **标题与描述解析** 标题"Hibernate 中文api 等学习资料"暗示了这是一组针对...通过阅读和学习这些资料,开发者可以全面掌握Hibernate框架,并将其应用于实际项目中,提升Java应用的数据访问层开发效率和质量。

    spring、hibernate jar包介绍

    Spring 提供了一个全面的编程和配置模型,而 Hibernate 则是 ORM(对象关系映射)框架,用于简化数据库操作。 Spring 框架的 jar 包介绍: 1. **spring.jar**:这是 Spring 的核心发布包,包含了大部分功能,但不...

    SPRING ,HIBERNATE,MYBATIS重构系统(带spring事务测试及spring Restful测试)

    Spring是全面的Java应用框架,提供了一个开发Java应用的全栈解决方案;Hibernate是一个强大的对象关系映射(ORM)框架,简化了数据库操作;而MyBatis则是一个轻量级的持久层框架,它解决了SQL与Java代码的耦合问题。...

Global site tag (gtag.js) - Google Analytics