遗留系统采用了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是一个深度探讨如何在Java Web应用程序中集成这三大框架的实践教程。Struts2、Hibernate和Spring是Java开发领域中非常重要的开源框架,它们各自解决了Web应用中的...
这些框架分别负责控制层、持久层和应用层的管理,它们的协同工作能够构建出高效、可维护的Web应用。 **Struts 2** 是一个用于构建MVC(模型-视图-控制器)架构的Java框架,它极大地简化了Java Web应用的开发。...
在这个实战项目中,开发者会学习到如何配置这三个框架,包括设置Struts 2的配置文件(struts.xml)、Hibernate的持久化层配置(hibernate.cfg.xml)以及Spring的上下文配置(applicationContext.xml)。每个框架的...
《Java持久层框架之Hibernate》是一本专注于Java领域中Hibernate框架的专业书籍,旨在帮助开发者深入理解和熟练运用这一强大的ORM(对象关系映射)工具。Hibernate是Java开发中的一个热门选择,它极大地简化了数据库...
### 持久层Hibernate详解 #### 一、什么是Hibernate? Hibernate是一个开源的对象关系映射(Object Relational Mapping,简称ORM)框架,用于Java应用程序与关系型数据库交互。通过使用Hibernate,开发人员可以将...
《轻量级 J2EE 企业应用实战--Struts+Spring+Hibernate 整合开发》是一本深入探讨Java EE(以前称为J2EE)轻量级框架集成的书籍,主要聚焦于Struts、Spring和Hibernate这三大开源技术的协同工作。这本书的源代码提供...
这本书是Hibernate学习者的必读之作,被誉为经典中的经典,对于理解和掌握Java持久层技术具有极高的价值。 Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发人员在Java应用中使用面向对象的方式来处理...
《Java Persistence with Hibernate》是Java开发领域中一本深入探讨Hibernate持久化框架的重要著作。这本书由Christian Bauer和Gavin King合著,详细阐述了如何利用Hibernate进行数据库操作和对象关系映射(ORM)。 ...
它规范了控制器层的实现,使得开发者可以更专注于业务逻辑,而不是处理HTTP请求和响应。 5. **Hibernate ORM**:Hibernate是一个对象关系映射(ORM)框架,它允许开发者用Java对象来操作数据库,避免了SQL的直接...
Hibernate是一个开源的对象关系映射(ORM)框架,它被广泛用于Java应用中,用以实现数据持久化层。它允许开发者使用面向对象的方式来操作数据库,从而可以脱离数据库底层细节。Hibernate不仅封装了JDBC,并且实现了...
**Hibernate** 是一个流行的Java ORM(对象关系映射)框架,它简化了数据库操作,让开发者可以使用面向对象的方式来处理数据库事务,而无需直接编写SQL语句。Hibernate通过实体类和配置文件,自动管理数据的持久化,...
4. Session和Transaction:深入理解Hibernate的Session接口,包括保存、更新、删除、加载和检索对象,以及事务处理的原理和API使用。 5. HQL和 Criteria查询:介绍Hibernate特有的面向对象的查询语言HQL,以及...
2. **Hibernate框架**:Hibernate作为Java领域最流行的ORM框架之一,它提供了一整套解决方案,包括持久化模型定义、数据访问对象(DAO)创建、查询语言(HQL)和Criteria API等,使得开发者能更方便地处理数据库操作...
Struts负责处理用户的请求和展现视图,而Hibernate则负责数据持久化。这种架构使得开发者能够更加专注于业务逻辑,而非底层的实现细节。 在《轻量级 J2EE 企业应用实战:Struts+Spring+Hibernate 整合开发》这本书...
Hibernate是一个强大的Java对象关系映射(ORM)框架,它简化了数据库操作,使开发者可以更专注于业务逻辑而不是繁琐的数据访问层代码。结合Ajax技术,我们可以实现页面的异步更新,提高用户体验。 一、Hibernate...
《Java Persistence with Hibernate》是Java开发领域中一本极具影响力的书籍,尤其对于那些专注于持久层框架技术的开发者来说,它提供了深入理解和使用Hibernate的宝贵资源。这本书的第二版由Hibernate的创始人Gavin...