`
何胜彬
  • 浏览: 4344 次
文章分类
社区版块
存档分类
最新评论

单例与hibernate事务问题

 
阅读更多
action中非单例:请求参数覆盖问题:多线程操作,每个线程都有自己的数据存储空间,所以不会有参数覆盖问题

hibernate事务问题:

   对于使用Hibernate实现持久化功能的系统来说,事务的处理是这样的:服务器端在接收到用户的请求后,会创建一个新的Hibernate Session对象,然后通过该Session对象开始一个新的事务并且之后所有对数据库的操作都通过该Session对象来进行。最后,完成将响应页面发送到客户端的工作后再提交事务并且关闭Session。

   Hibernate中事务处理的具体方法可以参照前面的网络博客的实例。

       但是这种事务处理的方式还是会遇到一些问题,其中最突出的就是更新冲突的问题。例如,某个操作人员进入了用户信息的修改页面,在经过一段时间的对用户信息的修改后,进行提交操作,而与此同时可能会有另外一个操作人员也进行了相同的操作,这样在处理提交的时候就会产生冲突。

       产生这个冲突的原因在于在开发中需要使用多个数据库事务来实现一个应用事务。也就是说,在应用程序层,应该将读取用户信息、显示修改页面以及用户提交工作来作为一个事务进行处理,在处理的过程中应该避免其他操作人员进行类似的操作。

       回想前面的介绍,我们对于数据库事务所采取的策略是每个用户请求一个事务,而上面的业务处理则至少需要两个请求才能完成。这样,两者之间就存在着一定的矛盾,这也就导致了不可重复读取和两次更新问题的发生。

       为了解决并发中数据访问的问题,通常会采用锁的机制来实现数据访问的排他性,从而避免两次更新问题的发生。
分享到:
评论

相关推荐

    hibernate-core

    Spring可以帮助管理Hibernate Session的生命周期,避免在多线程环境下的并发问题,并提供事务管理,使得代码更简洁,更易于测试。 总结来说,Hibernate核心(hibernate-core)是SSH框架中的重要组成部分,它简化了...

    hibernate所有开发包

    3. Configuration:配置对象用于读取Hibernate配置文件,初始化SessionFactory,它是单例的,负责管理整个应用的数据库连接。 二、Hibernate核心组件 1. Configuration:加载hibernate.cfg.xml配置文件,设置...

    Hibernate的核心API

    瞬时态的对象未与Hibernate关联,持久态的对象由Hibernate管理其在数据库中的生命周期,而脱管态的对象曾经是持久化的,但当前不再与Session关联。这三个状态之间的转换是Hibernate自动管理的一部分,帮助开发者无需...

    Hibernate(session管理)

    Session是Hibernate的主要工作单元,它是应用程序与数据库之间的桥梁。它负责保存、检索和更新Java对象,同时处理事务和缓存机制。Session对象具有短暂性,通常在一次业务操作或一个用户会话中创建并使用,然后关闭...

    hibernate 中文参考文档

    - **分布式环境下的事务管理**:在分布式系统中,Hibernate可以与其他事务管理器集成,如JTA,以确保数据的一致性和完整性。 ### 结合其他技术 虽然标签中提到了“smarty”,但这里并没有直接关联的信息。然而,在...

    hibernate框架下对oracle数据库操作所需jar包.zip

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它简化了与数据库交互的过程,使得开发者可以使用面向对象的方式来操作数据库。对于Oracle数据库的支持,Hibernate提供了专门的驱动和配置,使得...

    Hibernate所需的一些jar包

    8. **Transaction管理**:Hibernate提供了集成的事务管理机制,可以与JTA(Java Transaction API)配合使用。 **压缩包子文件的文件名称列表** 由于给出的文件名是"hibernate3",这可能指的是整个Hibernate3的库。...

    Hibernate Soruce Code 源代码

    9. 深入源码学习的价值:了解Hibernate如何执行SQL、如何处理缓存、事务控制机制等,有助于解决实际开发中的问题,提升开发效率和代码质量。 10. 设计模式应用:Hibernate源代码中广泛应用了工厂模式、单例模式、...

    hibernate_3.1源码

    3. **事务管理**:了解Hibernate如何与JDBC或JTA协作,处理事务的提交、回滚和隔离级别。 4. **HQL(Hibernate Query Language)**:学习Hibernate特有的查询语言,它是如何转化为SQL并执行的。 5. **懒加载与即时...

    Hibernate资料

    2. **事务管理**: Hibernate 支持 JTA(Java Transaction API)和 JDBC 事务管理,确保数据的一致性和完整性。 3. **缓存机制**: Hibernate 内置了二级缓存,包括 Session 缓存和 Query 缓存,提高了数据读取性能。...

    SSH框架中构建hibernate必须的包

    7. **SessionFactory和Session**:SessionFactory是Hibernate的单例工厂,负责创建Session对象。Session是与数据库交互的接口,可以进行持久化操作、查询、事务控制等。 8. **Query和Criteria API**:Hibernate提供...

    hibernate中五个核心接口

    通过将 Java 对象映射到数据库表中,Hibernate 提供了一种更加面向对象的方式来处理数据存储问题。在 Hibernate 中,有五个核心接口扮演着至关重要的角色,它们分别是 Session、SessionFactory、Transaction、Query ...

    hibernate session生命周期示例

    Hibernate Session是Hibernate的核心接口,它是与数据库交互的主要接口。Session对象负责管理实体对象的状态,包括保存、更新、删除和检索数据。它的生命周期主要包括以下几个阶段: 1. **创建Session**: 当我们...

    hibernate-framework

    Hibernate支持JTA(Java Transaction API)和JDBC事务管理。通过`Transaction`对象来开始、提交或回滚事务,确保数据的一致性。 这个“hibernate-framework”压缩包应该包含了所有你需要了解和使用Hibernate的基础...

    hibernate-release-4.1.0.Final全部jar包

    Hibernate简化了数据库操作,提高了开发效率,但同时也可能带来性能问题,如过度使用ORM可能导致SQL执行效率下降。因此,理解何时使用原生SQL和优化查询是使用Hibernate的关键。 8. **最佳实践**: 使用...

    Hibernate3.2_帮助文档

    1. **对象关系映射(ORM)**:Hibernate的核心功能是通过将Java类与数据库表进行映射,使得程序员可以使用面向对象的方式来操作数据库,无需直接编写SQL语句,降低了数据库操作的复杂性。 2. **配置文件**:`...

    hibernate 2 安装手记.rar

    接下来,您可以继续深入学习Hibernate的高级特性,如缓存、事务管理、查询语言(HQL)等,以充分利用这个强大的ORM框架。同时,随着技术的发展,建议您考虑升级到更现代的Hibernate版本,以获得更好的性能和新功能。

    hibernate面试题总结

    Hibernate是Java领域中一款流行的持久...以上就是Hibernate面试中常见的问题和答案,涵盖了基本概念、缓存策略、查询方式以及事务和数据访问等方面的知识点。理解并掌握这些内容对于深入学习和使用Hibernate至关重要。

    简单的HIBERNATE应用

    Hibernate是Java开发中的一款非常流行的对象关系映射(ORM)框架,它简化了数据库与Java对象之间的交互,使得开发者可以更加专注于业务逻辑而不是繁琐的数据访问层代码。在这个“简单的Hibernate应用”中,我们将...

Global site tag (gtag.js) - Google Analytics