`
calmness
  • 浏览: 353276 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

DAO与SERVICE层的疑惑

    博客分类:
  • Java
阅读更多
    一直以来都是开发EJB的项目,对于SSH的架构仅仅只是处于了解而没实际开发过,最近正在将公司的一个EJB项目重构成一个SSH的架构,在实际开发过程中遇到了一些问题,其中一个就是持久层和业务层之间数据传输的问题。

    在原来EJB项目中,都是使用实体BEAN进行数据持久的,而现在换成了DAO负责持久逻辑,一开始的时候业务层和持久层之间数据通信都是直接使用POJO进行,不再需要像以前使用EJB那样将DTO的数据set到实体BEAN上,减少了很多不必要的代码,刚开始的时候觉得挺爽,可是后来发现一个问题,那就是在service层调用DAO持久一个POJO后,POJO将变成PO,DAO持久方法将会返回一个对象,而我目前的做法就是直接返回一个PO到业务层,可是现在发现这种做法存在不恰当的地方,那就是PO在业务层的话,结果就将业务层与持久层相耦合,而DAO层的作用也因此而消弱,但是如果我不是直接返回PO的话,那我又要构造一个VO返回给业务层,那这种做法不是又回到原来EJB的方式上?而且这样我也无法在业务层上获得HIBERNATE很多优化性能功能,例如lazy load等,看了很多相关的帖子,但是好像都没有我想要的答案,请教一下我该如何解决这个问题?
分享到:
评论
7 楼 coffee9527 2007-12-03  
我觉得你在这里的说法有一些问题,我个人认为关于hibeinate这个框架,它解决的问题是使程序员摆脱原先的面向的关系的SQL语句的写法,使用java的面向对象的写法,使程序员在写代码的时候更加的方便,但是你却把它用来优化业务逻辑层,是不是与他的设计初衷有些违背。你是不是应该从这些方面考虑一下。
6 楼 cxianf 2007-12-03  
这个问题一直困绕我很久,目前为止,我也是没有找到好的解决方案
5 楼 calmness 2007-12-02  
仔细考虑了一下,还是一个对象通到底,service和DAO层都是PO,到前台就脱管成POJO,简单点好。
4 楼 kyo100900 2007-12-02  
感觉具体技术还是应该跟需求走,是否需要有没有“状态”也要看你的功能有没有这个要求
3 楼 calmness 2007-12-01  
没人回答我的问题么?是我写的不清楚还是太浅了?自己顶下吧。
2 楼 calmness 2007-12-01  
很多人提倡OPEN SESSION IN VIEW,如果是这样,那不是在view层也要耦合与持久相关的逻辑?真是有点越想越混乱的感觉。
1 楼 calmness 2007-11-30  
仔细想想,如果想在业务层使用hibernate的一些特性的话,好像这种耦合也是必要的哦,不知道其他人是怎么做的。

相关推荐

    Service层和DAO层解析

    在简单的情况下,Service层可能直接调用DAO层的方法,但其主要目的是提供更高层次的抽象,处理业务规则,进行异常处理,并与其他服务或系统进行交互。 在分层架构中,Service层和DAO层的解耦是非常重要的。Spring...

    DAO层_Service层_Controller层、View层介绍

    DAO层_Service层_Controller层、View层的一些了解知识,帮助填充对这部分比较空白的开发者们。

    java代码生成器(dao层service层)

    DAO层是应用程序与数据库交互的主要接口,而Service层则封装了业务逻辑,两者在Java应用开发中占据着核心地位。使用代码生成器可以显著提高开发效率,减少手动编码的工作量,降低出错概率。 DAO层的主要职责是提供...

    action层,dao层 ,service层,entity层1

    在Java中,这些类通常被标记为`@Entity`,并使用JPA或Hibernate等ORM框架进行映射,以便于在Service层与DAO层之间传输和持久化数据。 5. **Util层(工具层)**: 这一层包含了一些通用的工具类和静态方法,比如...

    快速生成dao、service、controller等相关代码

    这个过程通常涉及编写DAO(Data Access Object)、Service和Controller层的代码,这些是软件架构中的核心组件。"快速生成DAO、Service、Controller等相关代码"的标题和描述暗示了一个针对这种情况的解决方案,即一个...

    ftl模板自动生成dao、service层功能,包括实现

    ftl模板自动生成dao、service层功能,包括实现... ftl模板自动生成dao、service层功能,包括实现... ftl模板自动生成dao、service层功能,包括实现... ftl模板自动生成dao、service层功能,包括实现...

    一次性生成dao和service层

    在反复的做项目的过程中,是不是每次都有大量的dao和service生成(vo的) 是不是总是要复制,粘贴.本人花了一天时间写了一个小小的工具.只需配合一下vo包名即可生成所有的vo 的dao 和service (当然,您的框架和我不一样只...

    基于MAVEN的SpringMVC+Mybatis整合及dao、service强封装

    SpringMVC+Mybatis整合及dao、service强封装:一、SPringMVC与Mybatis框架整合,其中SpringMVC主要采用注解方式实现,Mybatis采用xml为主,对数据库开发、测试、部署环境进行分离配置;二、在封装上针对Mybatis进行...

    jsp、servlet进行增删改查,dao层和service层分开

    在Java Web开发中,"jsp、servlet进行增删改查,dao层和service层分开"是一种常见的设计模式,它遵循了MVC(Model-View-Controller)架构,旨在提高代码的可维护性和可扩展性。以下是这个模式的详细解释: 1. **...

    Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合

    本文主要探讨Spring如何贯穿整个中间层,将Web层、Service层、DAO层以及PO(Plain Old Java Object)无缝整合起来。 #### 二、Spring框架的关键作用 1. **无缝整合**:Spring框架的一个显著特点是能够将不同的技术...

    Java自动生成entity、dao、service、controller代码

    Java自动生成entity、dao、service、controller代码

    自动生成dao,service

    在Java Web开发中,DAO层通常用于与数据库进行交互,包括CRUD(创建、读取、更新和删除)操作。Service层则负责业务逻辑,它调用DAO层的方法并进行必要的事务管理和业务规则处理。自动生成这些层的代码可以帮助...

    新闻发布系统设计思路(Dao与service)

    在这个系统的开发过程中,"Dao(数据访问对象)"与"Service(服务层)"是两个至关重要的概念,它们构成了业务逻辑的主要框架。这里我们将深入探讨这两个组件的设计思路。 首先,Dao层是系统与数据库交互的接口,它...

    DAO与三层结构

    DAO(Data Access Object)模式与三层结构是软件开发中常见的设计模式和架构方式,主要用于处理数据访问和业务逻辑。在企业级应用开发中,这两种技术的结合能够提高系统的可维护性、可扩展性和复用性。 DAO模式的...

    SSM框架下基本的mapper,dao,service,controller等相关文件的整理

    在Service层中,我们可以使用Spring框架提供的依赖注入机制,来将Dao层的对象注入到Service层中,从而实现业务逻辑与数据访问之间的交互。 Controller层 Controller层是SSM框架中的Web层,负责将用户请求与业务...

    spring MVC 实例代码

    基于注解的spring mvc,dao 层注解:@Repository("userDao"), entity层注解:@Entity,service层注解:@Service("userService"), action层注解:@Controller("userController") @RequestMapping("/user.do")

    自动生成MVC中的Service层、Dao层及Model层代码

    本文将详细介绍如何自动生成MVC架构中的Service层、Dao层以及Model层代码,以提高开发效率。 首先,Service层是业务逻辑层,它负责处理应用的核心业务。开发者通常会在此层与数据库交互,调用Dao层的方法来完成数据...

    hibernate4 通用dao,service

    标题中的“hibernate4 通用dao,service”指的是在Java开发中使用Hibernate框架实现的通用数据访问对象(DAO)和业务服务层(Service)。Hibernate是一个流行的对象关系映射(ORM)工具,它允许开发者使用面向对象的...

Global site tag (gtag.js) - Google Analytics