java中dao层和service层的区别是什么?

首先解释面上意思,service是业务层,dao是数据访问层。

呵呵,这个问题我曾经也有过,记得以前刚学编程的时候,都是在service里直接调用dao,service里面就new一个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、好处就是你的整个项目非常系统化,和数据库的表能一致,而且功能模块化,这样以后维护或者改错比较容易,性能也高一些
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JavaServiceDAOJava Web开发常见的两个级。Service主要负责业务逻辑的处理,而DAO则负责与数据库的交互。 Service通常包含业务逻辑的实现,例如数据的处理、验证、转换、计算等。它是整个应用程序的核心,负责协调各个模块之间的交互,确保业务逻辑的正确性和完整性。 DAO则负责与数据库的交互,包括数据的读取、写入、更新和删除等操作。它通常包含了数据库连接、SQL语句的执行和结果集的处理等功能,是实现数据持久化的关键。 在实际开发ServiceDAO通常是分离的,它们之间通过接口进行交互,以实现松耦合的设计。这种设计模式可以提高代码的可维护性和可扩展性,同时也方便进行单元测试和集成测试。 ### 回答2: JavaServiceDAO是非常重要的两个级,它们的任务是分离业务逻辑和持久化Service负责处理业务逻辑,而DAO负责与数据库进行交互,从而完成数据的持久化。 在下面的回答,我将详细介绍这两个级的角色以及它们的相互作用。 首先,DAO是数据持久化的核心。它的主要任务是与数据库进行交互,提供一系列的CRUD操作,以便将数据存储到数据库DAO通常与一个实体对象相关,提供查询,增加,更新和删除等数据访问方法。此外,DAO的方法通常是原子性的,即在执行操作期间不会出现异常,保证操作的完整性和可靠性。 而Service则更多地关注业务逻辑的实现,它主要负责完成业务需求的提供,减轻Controller的工作量。 Service由一个或多个方法组成,这些方法把DAO提取的数据进行预处理,进行业务逻辑的计算,例如收集数据,验证和校验数据,进行业务的计算,以及与DAO交互来完成相应的业务需求。 ServiceDAO不是孤立的,它们通过标准的接口进行了互动,能够共同实现实现业务需求。无论是Service还是DAO,都需要一个接口来定义提供的方法和参数类型。Service将持久化提供的方法进行封装,让Controller能够更容易的进行调用,并且提供更好的可重用性。而DAO提供的数据操作方法可以在Service进行集成和配置,让开发人员更有效地使用代码。 在集成业务逻辑和底数据访问时,这两个级互相支持。Service能够通过调用DAO获取数据,并将这些数据传递给业务模型进行预处理。在业务处理完成之后,需要将数据以持久化的形式存储到数据库,这时Service将使用DAO提供的方法来完成数据持久化,并将数据返回到相应的Controller进行输出。 综上所述,使用ServiceDAO能够分离业务逻辑和持久化,降低了代码重用的难度和学习成本,同时也避免了潜在的安全漏洞,提高了代码的可维护性和扩展性。在实际的应用开发过程,详细理解ServiceDAO的角色和位置,能够帮助我们更好的完成业务需求。 ### 回答3: JavaServiceDAO是分开发比较重要的两个次。 Service(业务逻辑)是整个系统的核心,它主要负责系统的业务逻辑,是业务逻辑的统一入口,将不同的DAO的数据进行组合,完成各种业务需求。业务逻辑对外提供的接口都应该是对外的业务,而不是单纯的数据操作。Service应该涵盖所有的业务规则和操作,封装了所有的复杂业务操作,使得控制流变得更加清晰、简单。 DAO(数据访问)是单一的数据操作接口,用于向数据库提供访问操作,封装了对数据库访问的细节,隐藏了数据存储的细节,使得Service的业务逻辑实现更加高效和简单。DAO提供了基本的CRUD(Create,Retrieve,Update,Delete)等基本数据访问操作,以及高级查询操作。DAO在解决了数据持久性问题的同时,也简化了数据库操作,提高了应用的可维护性和可扩展性。 ServiceDAO的关系是协作关系,其Service调用DAO,获取数据并处理,完成业务逻辑,最终把结果返回给客户端或其他调用者。DAO仅负责数据的访问,没有任何业务逻辑,而业务逻辑通过调用DAO的api来访问真正的数据源。ServiceDAO的分离,使得系统的各个次之间耦合度降低,便于修改和维护。 总之,使用ServiceDAO分离的编程方式,可以大大提高程序的可扩展性、可读性和可移植性。不同的业务功能应该放在不同的Service,并尽量避免Service类与DAO类之间的耦合。通过这样的分开发模式,可以帮助我们更加有效地管理整个应用程序,确保代码易于维护、可读性高、扩展性好。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值