`
jayce洪
  • 浏览: 23070 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

service层的作用

阅读更多
1,dao和service对应

       一般情况下,Hibernate DAO只操作一个POJO对象,因此一个DAO对应一个POJO对象。 Service层是为了处理包含多个POJO对象(即对多个表的数据操作)时,进行事务管理(声明式事务管理)。Service层(其接口的实现类)被注入多个DAO对象,以完成其数据操作。

2, Service之有无  

        这一点我的看法未必正确,我的脑海现在有两种构建业务层的模式:  

      模式1是Service + DAO,即DAO中只做CRUD及类似的简单操作(称之为功能点,不包含业务逻辑),Service中通过调用一个或多个DAO中的功能点来组合成为业务逻辑.Service的数量应该由功能模块来决定。  

      在这种模型中业务逻辑是放在Service中的,事务的边界也应该在Service中控制. 当然,直接在Service中控制事务会引入非业务逻辑的代码,幸好Spring的AOP可以解决这个问题,这也是引入Spring的原因之一.    

       如果说到缺点,就在于对某些对象的操作就是简单的CRUD,Service层显得累赘.



2:
从字面的意思上来看,service是业务层,dao是数据访问层。
记得刚学编程的时候,都是在service里直接调用dao,service里面就new一个dao类对象,调用,其他有意义的事没做,因为也不知道应该在里面写些什么有意义的代码,也不明白有这个有什么用,甚至还觉得不要serivce层不更好,省点功夫,反正它不也就是copy了一次dao层然后改个名字而已么……
我们都知道,标准主流现在的编程方式都是采用MVC综合设计模式,MVC本身不属于设计模式的一种,它描述的是一种结构,最终目的达到解耦,解耦说的意思是你更改某一层代码,不会影响我其他层代码,如果你会像spring这样的框架,你会了解面向接口编程,表示层调用控制层,控制层调用业务层,业务层调用数据访问层。初期也许都是new对象去调用下一层,比如你在业务层new一个DAO类的对象,调用DAO类方法访问数据库,这样写是不对的,因为在业务层中是不应该含有具体对象,最多只能有引用,如果有具体对象存在,就耦合了。当那个对象不存在,我还要修改业务的代码,这不符合逻辑。好比主板上内存坏了,我换内存,没必要连主板一起换。我不用知道内存是哪家生产,不用知道多大容量,只要是内存都可以插上这个接口使用。这就是MVC的意义。
接下来说如果现在感觉不到service的存在意义,其实因为现在做东西分层次不是那么严格,在一个你们做东西业务本身也少,举个最简单的例子,你做一个分页的功能,数据1000条,你20条在一个页,你可以把这个功能写成工具类封装起来,然后在业务层里调用这个封装的方法,这才是业务里真正干得事,只要没访问数据库的,都要在业务里写。
比说你现在用的是SSH框架,做一个用户模块:
1、假设现在你做这个功能会用到user表和权限表,那么你前台的页面访问action,action再去调用用户模块service,用户模块service判断你是操作user表还是权限表,如果你操作的是user表则service的实现类就去调用userDAO。如果是操作的是权限表则调用权限的DAO
2、也就是说DAO一定是和数据库的每张表一一对应,而service则不是。明白的没?其实你一个项目一个service和一个DAO其实也一样可以操作数据库,只不过那要是表非常多,出问题了,那找起来多麻烦,而且太乱了
3、好处就是你的整个项目非常系统化,和数据库的表能一致,而且功能模块化,这样以后维护或者改错比较容易,性能也高一些
分享到:
评论

相关推荐

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

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

    Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合,其数据服务层用来存放数据。

    具体来说,Spring可以将Web层、Service层、DAO层以及PO(Plain Old Java Object)对象无缝整合在一起,形成一个完整而高效的应用程序架构。 - **Web层**:处理与用户交互相关的部分,如HTTP请求的接收、处理以及...

    基于SSM框架实现电子商城系统带sql数据库文件

    作用:Service层主要负责业务模块的逻辑应用设计。 先设计接口然后再设计实类,然后再在Spring的配置文件中配置其实现的关联。(业务逻辑层的实现具体要调用到自己已经定义好的Dao的接口上)这样就可以在应用中调用...

    基于SSM框架实现电子商城系统带sql数据库文件分享

    作用:Service层主要负责业务模块的逻辑应用设计。 先设计接口然后再设计实类,然后再在Spring的配置文件中配置其实现的关联。(业务逻辑层的实现具体要调用到自己已经定义好的Dao的接口上)这样就可以在应用中调用...

    laravel-service-layer:此程序包允许生成服务层,以抽象业务逻辑类并将对模型的调用解耦

    安装composer require madeweb/service-layer 生成服务基类和定制服务类 php artisan make:service ServiceName 使用定制模型生成服务基类和定制服务类 php artisan make:service ServiceName --model=App \\ Models...

    service业务类

    Service层是模型-视图-控制器(MVC)架构或其他分层设计中的关键环节,它将数据访问层(如DAO)和表现层(如Controller)分离开来,使得代码结构更加清晰,易于维护和扩展。 在Java EE或Spring框架中,Service层...

    sql数据库及三层结构数据查询示例 WcfService

    在IT行业中,SQL数据库和WcfService是两个关键的技术领域,它们在开发高效、可靠的分布式应用程序时发挥着重要作用。本文将深入探讨这两个概念,并结合三层结构数据查询示例,帮助你理解它们如何协同工作。 首先,...

    如何让CI框架支持service层

    首先,让我们理解Service层的作用。Service层主要负责业务逻辑的处理,它是介于Controller和Model之间的中间层。Controller不再直接处理复杂的业务逻辑,而是调用Service层提供的接口,这样可以使得Controller更简洁...

    hal层示例,AP + service

    3.1 Service层:在Android系统中,Service是一种长期运行的组件,负责执行后台任务。在HAL层示例中,服务可能是一个管理硬件资源的服务,如电源管理服务、传感器服务等。 3.2 IPC通信:AP通过Android的 Binder 机制...

    Laravel开发-laravel-service-layer

    在Laravel中,服务层的主要作用是: 1. **业务逻辑封装**:服务层负责处理复杂的业务逻辑,如数据验证、业务规则应用、跨模型操作等,避免在控制器中混杂过多的业务代码。 2. **解耦**:通过将业务逻辑抽取到独立...

    项目model、Dao层、业务层建模工具类

    然后,"业务层"通常指的是服务层(Service Layer),这是应用程序的核心部分,实现了具体的业务逻辑。在这个层面上,建模工具类可能涉及到服务的注册、依赖注入、并发控制等,以支持更高效、更灵活的服务构建。 在...

    Service学习(三)

    【Service学习(三)】 ...通过深入研究ServiceDemo,我们能更好地理解Service层在软件开发中的作用,从而提升我们的编程能力和项目构建能力。在实际工作中,要灵活运用这些知识,以适应不断变化的业务需求。

    为什么我们需要Service Mesh

    ### 为什么我们需要Service Mesh ...随着技术的不断发展和完善,Service Mesh将在更多的应用场景中发挥关键作用。对于正在采用或计划采用微服务架构的企业来说,了解并应用Service Mesh技术变得越来越重要。

    怎样区分Action, Service 和 Dao功能.

    Service的主要作用是处理业务逻辑,不依赖于任何表现技术,不操作任务用于表现的对象。 Dao是指数据访问对象,负责对数据库的访问和操作。例如,在上面的示例代码中,update方法就可以放到Dao中。Dao的主要作用是...

    03---Controller-Service-Dao.zip

    它接收来自用户的请求,对请求进行初步处理,并调用Service层的方法来完成业务逻辑。Controller通常使用Spring MVC框架中的Controller注解,如`@RequestMapping`来处理HTTP请求,并通过`@Autowired`注解注入Service...

    5. 多个service实现同一个接口 或者抽象类 1

    `@Service`注解通常用于表示业务层的服务类。在这里,它们分别注入了不同类型的`OAXmlDealHandle`实现,通过`@Resource`注解来指定类型,分别是`OAXmlDealHandleOne`和`OAXmlDealHandleTwo`。这样,每个Service类...

    蚂蚁金服serviceMesh落地实践与挑战

    在深入探讨蚂蚁金服ServiceMesh的落地实践与挑战之前,首先要理解ServiceMesh技术的核心概念及其在微服务架构中的作用。 ServiceMesh是一种用于处理服务间通信的架构模式,它将网络通信、安全、监控、故障恢复等...

    day02-Service Mesh课程讲义-黑马程序员1

    物理层是指实际的网络设备和介质,数据链路层是指Node之间的通信,网络层是指Pod之间的通信,传输层是指Service之间的通信。 1.2.2、服务间的通信 Service Mesh提供了一种灵活、可靠、可扩展的解决方案来管理服务...

    angular service controller分层示例

    在AngularJS中,服务(Service)和控制器(Controller)是两个关键的概念,它们在构建复杂的前端应用程序时起着至关重要的作用。本示例"Angular Service Controller分层示例"旨在展示如何有效地使用这两个组件来实现...

    代码生成器,自动生成Mapper,Controller,service文件

    3. Service文件:Service层是业务逻辑的核心,它封装了对数据持久层的操作。生成Service文件时,代码生成器会创建Service接口和实现类,定义业务方法,并可能包含事务控制、异常处理等通用逻辑。这样,开发者可以...

Global site tag (gtag.js) - Google Analytics