`

实战事务处理-适用于使用hibernate作持久层的系统

阅读更多

遗留系统采用了struts和hibernate,层次划分是很常见的表现层、service层、DAO层。

 

目前遗留系统有个事务处理的问题。代码在事务处理上面不统一:有的放在DAO层,有的在service层,各位看官肯定要说,这都没有统一吗,简直一堆狗屎。不错,我也觉得臭的受不了,所以采用了个简单的办法,真的很简单,呵呵。

 

其实如果事务处理的合理,事务处理放在哪一层倒是都可以。对于划分出服务层的系统来说,事务放在DAO处理会造成service层成为一个鸡肋的层次。关键是遗留系统处理service层事务的代码有问题:假设一个service方法包含了2个DAO的操作,且看有的代码:

 

Service方法:

Public void serviceMethod(){

  dao.method1();
  dao.method2();

}

 

 

DAO方法:
Public void method1(){
  Session session = HibernateUtil.currentSession();
  session.beginTransaction();
  ....
 session.getTransaction().commit();

}

 

 

Public void method2(){

  Session session = HibernateUtil.currentSession();
  session.beginTransaction();
  ....
  session.getTransaction().commit();

}

 

 

显然写代码的人认为service层的2个方法是一个事务单元,可是如此处理的结果:method1和method2却是执行在两个事务中,很显然这样处理是错误的。

 

个人认为,以下方法适用于hibernate做持久化处理的系统。当然,在此基础上稍做修改,也适用于直接应用JDBC或者其他持久层框架的系统。


 

Service方法:

Public void serviceMethod(){

  Session session = HibernateUtils.getCurrentSession();

  Transaction tx = session.beginTransaction();

 

  dao.method1();

  dao.method2();

 

  tx.commit();

}

 

 

DAO方法:

Public void method1(){

  Session session = HibernateUtils.getCurrentSession();

  session.save(po1);

}

 

Public void method2(){

  Session session = HibernateUtils.getCurrentSession();

  session.update(po2);

}

 

分享到:
评论

相关推荐

    JavaWeb整合开发实战--基于Struts2+Hibernate+Spring(pdf已分割)

    JavaWeb整合开发实战--基于Struts2+Hibernate+Spring是一个深度探讨如何在Java Web应用程序中集成这三大框架的实践教程。Struts2、Hibernate和Spring是Java开发领域中非常重要的开源框架,它们各自解决了Web应用中的...

    第3章【源码】java web整合开发实战--基于struts 2+hibernate+spring 贾蓓 镇明敏 杜磊

    这些框架分别负责控制层、持久层和应用层的管理,它们的协同工作能够构建出高效、可维护的Web应用。 **Struts 2** 是一个用于构建MVC(模型-视图-控制器)架构的Java框架,它极大地简化了Java Web应用的开发。...

    第4章【源码】java web整合开发实战--基于struts 2+hibernate+spring 贾蓓 镇明敏 杜磊

    在这个实战项目中,开发者会学习到如何配置这三个框架,包括设置Struts 2的配置文件(struts.xml)、Hibernate的持久化层配置(hibernate.cfg.xml)以及Spring的上下文配置(applicationContext.xml)。每个框架的...

    书籍-java持久层框架之hibernate完整高清PDF

    《Java持久层框架之Hibernate》是一本专注于Java领域中Hibernate框架的专业书籍,旨在帮助开发者深入理解和熟练运用这一强大的ORM(对象关系映射)工具。Hibernate是Java开发中的一个热门选择,它极大地简化了数据库...

    持久层hibernate详解

    ### 持久层Hibernate详解 #### 一、什么是Hibernate? Hibernate是一个开源的对象关系映射(Object Relational Mapping,简称ORM)框架,用于Java应用程序与关系型数据库交互。通过使用Hibernate,开发人员可以将...

    《轻量级 J2EE 企业应用实战--Struts+Spring+Hibernate 整合开发》源代码

    《轻量级 J2EE 企业应用实战--Struts+Spring+Hibernate 整合开发》是一本深入探讨Java EE(以前称为J2EE)轻量级框架集成的书籍,主要聚焦于Struts、Spring和Hibernate这三大开源技术的协同工作。这本书的源代码提供...

    Manning - Java Persistence With Hibernate

    这本书是Hibernate学习者的必读之作,被誉为经典中的经典,对于理解和掌握Java持久层技术具有极高的价值。 Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发人员在Java应用中使用面向对象的方式来处理...

    Manning - Java Persistence With Hibernate.pdf

    《Java Persistence with Hibernate》是Java开发领域中一本深入探讨Hibernate持久化框架的重要著作。这本书由Christian Bauer和Gavin King合著,详细阐述了如何利用Hibernate进行数据库操作和对象关系映射(ORM)。 ...

    精通Java EE项目案例-基于Eclipse Spring Struts Hibernate光盘源码(第二版)

    它规范了控制器层的实现,使得开发者可以更专注于业务逻辑,而不是处理HTTP请求和响应。 5. **Hibernate ORM**:Hibernate是一个对象关系映射(ORM)框架,它允许开发者用Java对象来操作数据库,避免了SQL的直接...

    Hibernate4实战.pdf

    Hibernate是一个开源的对象关系映射(ORM)框架,它被广泛用于Java应用中,用以实现数据持久化层。它允许开发者使用面向对象的方式来操作数据库,从而可以脱离数据库底层细节。Hibernate不仅封装了JDBC,并且实现了...

    第2章【源码】java web整合开发实战--基于struts 2+hibernate+spring 贾蓓 镇明敏 杜磊

    **Hibernate** 是一个流行的Java ORM(对象关系映射)框架,它简化了数据库操作,让开发者可以使用面向对象的方式来处理数据库事务,而无需直接编写SQL语句。Hibernate通过实体类和配置文件,自动管理数据的持久化,...

    hibernate---实战

    2. **Hibernate框架**:Hibernate作为Java领域最流行的ORM框架之一,它提供了一整套解决方案,包括持久化模型定义、数据访问对象(DAO)创建、查询语言(HQL)和Criteria API等,使得开发者能更方便地处理数据库操作...

    轻量级 J2EE 企业应用实战:Struts+Spring+Hibernate 整合开发

    Struts负责处理用户的请求和展现视图,而Hibernate则负责数据持久化。这种架构使得开发者能够更加专注于业务逻辑,而非底层的实现细节。 在《轻量级 J2EE 企业应用实战:Struts+Spring+Hibernate 整合开发》这本书...

    hibernate开发租房系统

    Hibernate是一个强大的Java对象关系映射(ORM)框架,它简化了数据库操作,使开发者可以更专注于业务逻辑而不是繁琐的数据访问层代码。结合Ajax技术,我们可以实现页面的异步更新,提高用户体验。 一、Hibernate...

    Manning.Java.Persistence.with.Hibernate[Hibernate实战第二版].pdf

    《Java Persistence with Hibernate》是Java开发领域中一本极具影响力的书籍,尤其对于那些专注于持久层框架技术的开发者来说,它提供了深入理解和使用Hibernate的宝贵资源。这本书的第二版由Hibernate的创始人Gavin...

    精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例.rar

    这个整合应用案例将带领读者深入理解如何在Eclipse环境下,使用Struts作为前端控制器,Hibernate管理数据持久化,Spring提供整体的架构支撑。开发者将学习到如何配置和集成这些框架,以及如何利用它们的优势来解决...

    图解学习、搭建、整合Struts-Spring-Hibernate框架

    Struts处理MVC(Model-View-Controller)架构中的控制器部分,Spring作为核心容器管理其他组件,并提供AOP(面向切面编程)和IoC( inversion of control,控制反转)功能,而Hibernate则是持久层的优秀解决方案,...

    JavaEE企业应用实战-Struts2+Spring3+Hibernate整合开发(第3版)

    Hibernate作为持久层框架,实现数据访问操作。 - **整合步骤**: 1. **配置文件准备**:创建并配置Struts2的struts.xml文件、Spring的applicationContext.xml文件以及Hibernate的hibernate.cfg.xml文件。 2. **DAO...

    Hibernate实战(第2版 中文高清版)

     1.3 持久层和其他层 显示全部信息第一部分 从Hibernate和EJB 3.0开始  第1章 理解对象/关系持久化   1.1 什么是持久化   1.1.1 关系数据库   1.1.2 理解SQL   1.1.3 在Java中使用SQL   1.1.4 面向对象...

Global site tag (gtag.js) - Google Analytics