`

hibernate 事务机制

 
阅读更多

 

数据库事务的定义

 

    事务是指一组相互信赖的操作行为。这些操作要么必须全部成功,要么必须全部失败,以保证数据的一致性和完整性。

    数据库事务是对现实生活中事务的模拟,它由一组在业务逻辑上相互信赖的SQL语句组成。

 

数据库事务的ACID属性

 

    原子性(Atomic)

 

    指整个数据库事务是不可分割的工作单元。原子性确保在事务中的所有操作要么都发生,要么都不发生。

 

    一致性(Consistency)

 

    一旦一个事务结束了(不管成功与否),系统所处的状态和它的业务规则是一致的。即数据应当不会被破坏。

 

    隔离性(Isolation)

 

    指多个事务同时操作同一数据时,每个事务都有各自的完整数据空间。

 

    持久性(Durability)

 

    一旦事务完成,事务的结果应该持久化。

 

JDBC声明事务

 

Connection con = null;
PreparedStatement pstmt = null;
try{
    con = DriverManager.getConnection(dbUrl, username, password);
    //设置手工提交事务模式
    con.setAutoCommit(false);
    pstmt = ……;
    pstmt.executeUpdate();
    //提交事务
    con.commit();
}catch(Exception e){
    //事务回滚
    con.rollback();
    …..
} finally{
    …….
}

 

 

 

Hibernate 事务

 

      

 

   1、如果Hibernat持久层运行在一个非托管环境中,可以在hibernate配置文件 hibernate.cfg.xml中指定:

 

 

<session-factory>
    <property name="transaction.factory_class">
        org.hibernate.transaction.JDBCTransactionFactory
    </property>
</session-factory>

 

 

 

Transaction tx = null;
try {
    tx = session.beginTransaction();
    // do some work...
    tx.commit();
}catch (RuntimeException e) {
    if (tx != null) tx.rollback();
    throw e; // or display error message
}finally {  
    session.close();  
}

 

 

注:

  • 不管事务成功与否,最后都应该调用Sessionclose()方法来关闭Session

  • 即使事务中只包含只读操作,也应该在事务执行成功后提交事务,并且在事务执行失败时撤销事务。因为在提交或撤销事务时,数据库会释放事务所占用的资源,有利于提高数据库的运行性能。
  • 一个Session可以包含多个Transaction实例,也就是说,一个Session可以对应多个事务。
  • 如果在执行Session的一个事务时出现了异常,就必须立即关闭这个Session不能再利用这个Session来执行其他的事务

 

        2、Hibernat持久层运行在一个托管环境中,可以配置使用JTA

 

<session-factory>
    <property name="transaction.factory_class">
        org.hibernate.transaction.JTATransactionFactory
    </property>
</session-factory>

 

// BMT(bean管理事务) 
UserTransaction tx = null;
try {
    tx = (UserTransaction)new InitialContext().lookup("java:comp/UserTransaction");
    tx.begin();
    // Do some work on Session bound to transaction
    factory.getCurrentSession().persist(...);
    tx.commit();
} catch (RuntimeException e) {
    tx.rollback();
    throw e; // or display error message
}

注:在CMT(容器管理事务)方式下,事务声明是在session bean的部署描述符中,而不需要编程。

分享到:
评论

相关推荐

    详解Hibernate事务处理机制

    ### 详解Hibernate事务处理机制 #### 一、引言 Hibernate作为一款优秀的对象关系映射(ORM)框架,在Java开发领域扮演着极其重要的角色。它不仅简化了数据持久化的复杂性,还提供了一系列强大的功能来支持高效的...

    hibernate事务管理机制.doc

    【hibernate事务管理机制】是指在使用Hibernate框架进行数据库操作时,如何管理和协调事务的一系列规则和策略。事务管理是确保数据一致性、完整性和并发控制的重要机制。 **悲观锁**是预防性的锁定策略,它假设并发...

    spring hibernate 事务管理学习笔记(一)

    本文将深入探讨Spring与Hibernate整合时的事务管理,帮助你更好地理解和运用这些技术。 首先,Spring框架是Java企业级应用的基石,它提供了一种依赖注入(Dependency Injection,DI)的方式,使得组件之间的耦合度...

    Hibernate的事务处理机制和flush方法的用法.docx

    在本文中,我们将深入探讨Hibernate的事务处理机制以及`flush`方法的用法,并分析为何在某些场景下会出现特定的异常。 首先,我们需要了解Hibernate中的事务处理。在Java应用中,事务通常与SessionFactory和Session...

    hibernate缓存机制

    Hibernate缓存机制是提高应用程序性能的关键技术之一,它通过存储数据副本减少对物理数据库的访问。缓存可以分为两层:第一级缓存和第二级缓存。 **第一级缓存**是内置在Session中的,它是不可卸载的,也称为...

    Could not roll back Hibernate transaction.doc

    本文详细介绍了Hibernate事务回滚失败的问题原因和解决方法,并对Hibernate的事务管理机制和事务回滚机制进行了详细说明。开发人员在使用Hibernate时,应该遵循Hibernate提供的API和事务管理机制,以确保数据库的...

    spring mvc+hibernate 实现事务管理(全注解版)

    2. **Hibernate事务**: Hibernate本身也提供了一种事务管理机制,但在Spring环境中,我们通常使用Spring的事务管理器来协调。当@Transactional注解应用于方法上,Spring会在该方法执行前后自动管理事务的开始和结束...

    Hibernate事务和并发控制

    总结来说,Hibernate的事务管理和并发控制是保证数据一致性和完整性的关键机制。理解并正确使用这些机制,可以确保在高并发环境下应用的稳定性和数据的准确性。在实际开发中,开发者需要根据项目需求和环境选择合适...

    Hibernate 3.2 中文参考

    - **事务管理**:理解Hibernate事务机制,包括如何控制事务边界、隔离级别和回滚策略。 - **缓存机制**:探索Hibernate的一级缓存和二级缓存机制,了解它们的工作原理以及如何合理配置以提高应用性能。 - **高级...

    JDBC和hibernate事务的详解

    **JDBC与Hibernate事务详解** 在Java开发中,数据库事务管理是确保数据一致性、完整性和原子性的重要机制。本讲解将深入探讨JDBC(Java Database Connectivity)和Hibernate两种不同的技术在处理事务时的方法和特点...

    Hibernate锁机制_悲观锁和乐观锁

    Hibernate 锁机制_悲观锁和乐观锁 Hibernate 锁机制是指在数据库访问中,为了维护数据的一致性和正确性,所采取的一些机制来防止数据的并发访问和修改。 Hibernate 中有两种锁机制:悲观锁和乐观锁。 一、悲观锁...

    day36 09-Hibernate中的事务:事务处理

    **一、Hibernate事务的概念** 事务是一组数据库操作,这些操作被视为一个逻辑单元,要么全部执行,要么全部不执行。这是为了保证数据的一致性。在Hibernate中,事务管理通常通过SessionFactory和Session接口来实现。...

    hibernate 事务管理注意事项

    ### hibernate 事务管理注意...综上所述,Hibernate事务管理的合理配置对于保证系统的稳定性和数据一致性至关重要。开发者应该充分了解Hibernate的缓存机制及其对事务管理的影响,并根据实际情况灵活调整事务管理策略。

    Hibernate4实战 之第五部分:Hibernate的事务和并发

    #### 二、Hibernate事务管理机制 Hibernate 本身不实现事务逻辑,而是依赖于底层的数据源(JDBC 或 JTA)来实现事务管理。这意味着,当你使用 Hibernate 进行数据操作时,所涉及的事务要么基于 JDBC 的事务管理,要么...

    HIBERNATE的缓存机制

    Hibernate缓存机制是提高应用程序性能的关键特性,尤其是在频繁与数据库交互的应用中。缓存通过减少对物理数据库的直接访问次数,显著提升了数据读取和写入的速度。这主要是因为从缓存中读取数据比从数据库中获取更...

    Hibernate事务

    首先,Hibernate 默认的事务处理机制是基于 JDBC Transaction。这意味着在进行数据库操作时,Hibernate 会依赖底层的 JDBC 连接来管理事务。在使用 JDBC 事务时,开发者通常需要手动开启和提交事务。例如,通过 `...

    Hibernate事务处理

    ### Hibernate事务处理详解 #### 一、事务处理概念与特性 事务处理是数据库操作中一个核心的概念,尤其在处理复杂的业务逻辑时,确保数据的一致性和完整性至关重要。Hibernate作为Java领域中广泛使用的对象关系...

    Hibernate 事物隔离级别 深入探究

    在 Hibernate 中,事务隔离级别是指数据库系统提供的一种机制,以解决并发事务带来的问题。为了确保数据库的可靠性和一致性,Hibernate 提供了四种事务隔离级别,分别是 Serializable、Repeatable Read、Read ...

    Hibernate缓存与spring事务详解

    本篇文章将深入探讨Hibernate的缓存机制和Spring的事务管理,以帮助开发者更好地理解和利用这两个强大的工具。 **一、Hibernate缓存** 1. **第一级缓存:Session缓存** - Hibernate的每个Session都有一个内置的...

Global site tag (gtag.js) - Google Analytics