精华内容
下载资源
问答
  • Dao层和Service层

    2019-08-29 11:11:57
    在Java web项目开发中,会创建dao层和service层,dao层也是数据访问层,主要实现与数据库之间的数据交互逻辑;service层是业务层,主要实现项目业务的逻辑。更加直白的说,在dao层我们只需要关心数据库的操作,每张...

    在Java web项目开发中,会创建dao层和service层,dao层也是数据访问层,主要实现与数据库之间的数据交互逻辑;service层是业务层,主要实现项目业务的逻辑。更加直白的说,在dao层我们只需要关心数据库的操作,每张数据库表对应一个Dao对象,Dao对象来实现对数据库的查询、更新等操作;而Service层可以同时对多个Dao对象进行操作;当然从实现的角度而言,可以将Dao层实现的功能放在Service层实现,但这样会带来一些问题,如会经常修改业务层的代码,会将业务与对象紧耦合。因为在业务层中是不应该含有具体对象,最多只能有引用,如果有具体对象存在,就耦合了。

    以SSH框架中实现的用户模块:

    1. 假设现在存在两个数据库表,user表和权限表,前端页面访问action,action再去调用用户模块service,用户模块service会判断你是操作user表还是权限表,如果操作的是user表则service类就去调用userDAO。如果操作的是权限表则调用权限的DAO;
    2. 即DAO一定是和数据库的每张表一一对应,而service则不是。其实你一个项目一个service和一个DAO其实也一样可以操作数据库,如果操作的表非常多,出问题了,那找起来多麻烦,而且太乱了;
    3. 好处就是你的整个项目非常系统化,和数据库的表能一致,而且功能模块化,这样以后维护或者改错比较容易,性能也高一些
    展开全文
  • Dao层和service层

    2019-09-25 23:24:37
    DAO层DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口来进行数据业务的...

    DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。   

      

    Service层:Service层主要负责业务模块的逻辑应用设计。同样是首先设计接口,再设计其实现的类,接着再Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。Service层的业务实现,具体要调用到已定义的DAO层的接口,封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。   

      

    Controller:Controller层负责具体的业务模块流程的控制,在此层里面要调用Serice层的接口来控制业务流程,控制的配置也同样是在Spring的配置文件里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,这样不仅使程序结构变得清晰,也大大减少了代码量。   

      

    View 此层与控制层结合比较紧密,需要二者结合起来协同工发。View层主要负责前台jsp页面的表示,   

      

    DAO层,Service层这两个层次都可以单独开发,互相的耦合度很低,完全可以独立进行,这样的一种模式在开发大项目的过程中尤其有优势,ControllerView层因为耦合度比较高,因而要结合在一起开发,但是也可以看作一个整体独立于前两个层进行开发。这样,在层与层之前我们只需要知道接口的定义,调用接口即可完成所需要的逻辑单元应用,一切显得非常清晰简单。   

      

    DAO设计的总体规划需要和设计的表,和实现类之间一一对应。   

      

    DAO层所定义的接口里的方法都大同小异,这是由我们在DAO层对数据库访问的操作来决定的,对数据库的操作,我们基本要用到的就是新增,更新,删除,查询等方法。因而DAO层里面基本上都应该要涵盖这些方法对应的操作。除此之外,可以定义一些自定义的特殊的对数据库访问的方法。   

      

    Service逻辑层设计   

      

    Service层是建立在DAO层之上的,建立了DAO层后才可以建立Service层,而Service层又是在Controller层之下的,因而Service层应该既调用DAO层的接口,又要提供接口给Controller层的类来进行调用,它刚好处于一个中间层的位置。每个模型都有一个Service接口,每个接口分别封装各自的业务处理方法。   

      

    DAO层定义的一些方法,在Service层并没有使用,那为什么还要在DAO层进行定义呢?这是由我们定义的需求逻辑所决定的。DAO层的操作 经过抽象后基本上都是通用的,因而我们在定义DAO层的时候可以将相关的方法定义完毕,这样的好处是在对Service进行扩展的时候不需要再对DAO层进行修改,提高了程序的可扩展性。 

    代码:

     

    转载于:https://www.cnblogs.com/lhq1996/p/11345547.html

    展开全文
  • dao层和service层

    千次阅读 2015-05-14 10:40:02
    dao层中已经有操作数据库的方法了,为什么还要service层去封装?有什么好处? 首先解释面上意思,service是业务层,dao是数据访问层。 呵呵,这个问题我曾经也有过,记得以前刚学编程的时候,都是在service里直接...

    dao层中已经有操作数据库的方法了,为什么还要service层去封装?有什么好处?

    首先解释面上意思,service是业务层,dao是数据访问层。
    呵呵,这个问题我曾经也有过,记得以前刚学编程的时候,都是在service里直接调用dao,service里面就new一个dao类对象,调用,其他有意义的事没做,也不明白有这个有什么用,参加工作久了以后就会知道,业务才是工作中的重中之重。
    我们都知道,标准主流现在的编程方式都是采用MVC综合设计模式,MVC本身不属于设计模式的一种,它描述的是一种结构,最终目的达到解耦,解耦说的意思是你更改某一层代码,不会影响我其他层代码,如果你会像spring这样的框架,你会了解面向接口编程,表示层调用控制层,控制层调用业务层,业务层调用数据访问层。初期也许都是new对象去调用下一层,比如你在业务层new一个DAO类的对象,调用DAO类方法访问数据库,这样写是不对的,因为在业务层中是不应该含有具体对象,最多只能有引用,如果有具体对象存在,就耦合了。当那个对象不存在,我还要修改业务的代码,这不符合逻辑。好比主板上内存坏了,我换内存,没必要连主板一起换。我不用知道内存是哪家生产,不用知道多大容量,只要是内存都可以插上这个接口使用。这就是MVC的意义。
    接下来说你感觉service的意义,其实因为你现在做东西分层次不是那么严格,在一个你们做东西业务本身也少,举个最简单的例子,你做一个分页的功能,数据1000条,你20条在一个页,你可以把这个功能写成工具类封装起来,然后在业务层里调用这个封装的方法,这才是业务里真正干得事,只要没访问数据库的,都要在业务里写。
    再有不明白的追问,这是经验问题,呵呵,其实以后你就会懂。只是刚开始写的代码都是有个请求,我就去数据库取,业务几乎没有。

    DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。

    Service层

    Service层主要负责业务模块的逻辑应用设计。同样是首先设计接口,再设计其实现的类,接着再Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。Service层的业务实现,具体要调用到已定义的DAO层的接口,封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。
    Controller层
    Controller层负责具体的业务模块流程的控制,在此层里面要调用Serice层的接口来控制业务流程,控制的配置也同样是在Spring的配置文件里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,这样不仅使程序结构变得清晰,也大大减少了代码量。

    View层

    此层与控制层结合比较紧密,需要二者结合起来协同工发。View层主要负责前台jsp页面的表示,

    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 + BO, 而BO = DAO + 业务方法, 在原先DAO的基础上添加业务方法,形成BO对象。需要注意的是BO中的业务方法往往是针对一个实体对象的,如果需要跨越多个实体对象,则方法应该放在Service中。     
    
       举例来说,一个简单的银行帐户管理系统,创建帐户这个BO对象,里面可以有修改密码,取钱等业务方法(不难看出,这些方法都只对单个帐户对象进行操作)。现在需要添加一个转账方法,就应该放在Service中。    
    
       这里Service和BO的关系是什么样的呢?再举一例:以国家行政机关为例:粮食局负责收粮,卖种子等,建设部负责审批土地买卖,建设公路等,这都是行政部分份内的事儿。突然某地发了水灾,救灾时需要粮食局开仓放粮,建设部修建临时房屋,如何协调两个部门?就需要成立专门的救灾委员会,由救灾委员会出面对两个部分的资源进行调拨。这里两个部分就是BO,而救灾委员会就是Service。不知我的意思是否表达准确了,呵呵。     模式1的在划分Service和DAO时界限清晰,但会带来一些无必要的代码。     
    
      模式2的划分相对复杂,然而可以提高编码效率。    
    
     当然小规模的应用中,没有Service,完全是DAO或BO也是可以接受的。 
    

    3,Service和DAO的接口之有无

      接口是一种契约,它可以有多种实现。所以接口之有无取决于具体实现是否需要多样化。如果铁定一种DAO或一种Service只有一种实现,那么抽象出接口的意义不大。然而一些大型应用或许需要DAO和Service的多种实现(比如上面例子中的帐户DAO,可能需要一种Hibernate实现、一种CMP实现和一种JDO实现),为了向上一层隐藏具体实现类,需要采用接口。    
    
      隐藏具体实现类的创建过程,这有两种方法:一是实用工厂方法,代价是代码量大(每个DAO和Service一个工厂)。二是使用Spring的IoC,实现依赖注入,不需要写额外的代码,这也是引入Spring的理由之二。  
    
    展开全文
  • 这段时间在看JavaWeb的视频时候,产生了一个疑惑,为什么Dao层和Service层要写接口和实现类? 这里是引用 接口在JAVA编程语言中是一个抽象类型,是抽象方法的集合,可以将其理解成一种规范.如果项目中,Dao层或Service层...

    这段时间在看JavaWeb的视频时候,产生了一个疑惑,为什么Dao层和Service层要写接口和实现类?

    接口在JAVA编程语言中是一个抽象类型,是抽象方法的集合,可以将其理解成一种规范.如果项目中,Dao层或Service层只需要一种实现,那么直接编写实现类可以减少代码量与复杂度,如果项目中Dao层或Service层需要有多个实现类,使用接口可以实现解耦,例如Dao层可以使用JDBC或者MyBatis,而不需要修改Service层的代码

    展开全文
  • Java中dao层和service层的区别

    千次阅读 2019-03-06 09:54:48
    今天看了一篇文章,写的是关于Java中dao层和service层的区别,写的是相当好。忍不住跟大家分享。 service是业务层,dao是数据访问层。 记得以前刚学编程的时候,都是在service里直接调用dao,service里面就new一个...
  • 【心得】DAO层和Service层

    千次阅读 2017-04-10 02:49:32
    DAO层和Service层联系与对比 在MVC和三层框架里的DAO大层分为DAO层和DAOImpl层,Service大层分为Service层和ServiceImpl层;有时候感觉没有那么大必要,分这么多层,太麻烦,有的一个层才写一两句话,这个怎么理解呢...
  • 学习笔记-主要实现了购物系统的dao层和service层,主要是对象数据文件的读取,接口编程的学习。
  • 为什么dao层和service层要用接口?

    万次阅读 多人点赞 2019-03-12 10:13:27
    为什么dao层和service层要用接口? 迷茫o关注 0.12017.02.23 20:43*字数 2617阅读 5110评论 1喜欢 6 DAO接口 为每个DAO声明接口的好处在于: 可以在尚未实现具体DAO的时候编写上层代码,如Service里对DAO的调用 ...
  • DAO层和Service层的究极理解

    多人点赞 2020-07-21 16:47:24
    说实话,学了挺久的MVC架构了,到现在也一直没整明白Service层和DAO层是干什么用的。 这波是Dao成和Service层的究极理解,相信大家看了之后会有所感悟
  • dao层和service层的区别

    2020-03-27 17:59:58
    常见的系统架构有三层架构与MVC 三层架构 视图层View 服务层Service 持久层Dao View层:用于接收用户提交请求的代码在这里编写。 Service层:系统的业务逻辑主要在这里编写...service层,就是操作业务逻辑,它调取...
  • 采用java语言开发,原生jdbc编程,dao层和service分离,数据库采用oracle,基于servlet,jsp
  • junit4 测试dao层 和service层

    千次阅读 2012-02-26 10:56:31
    原因:dao层和service层是springyong@resorce注入的,我在测试类直接ew了dao层一个对象,出现空指针错误,原来spring没起作用 解决:不能直接new,要用ApplicationContext 来加载beans.xml,来获取bean对象。
  • 看到将dao层和service层的方法全部写成静态方法的做法,不明白这样子做有什么深意,请高手指点迷津。
  • Spring配置事务在DAO层和Service层 分类: spring 2008-08-19 11:07 3065人阅读 评论(0) 收藏 举报 springdaoserviceclassbeanstruts Spring通过AOP实现声明式事务管理。通常通过...
  • 为什么dao层和service层用单例,而action用多例 使用单例和多例的判断条件是会不会对类中公共属性进行修改,如果有修改则用多例。 action中一般会有前端对应的属性,如果是单例访问,所有访问公用一个action中的...
  • 但这样dao和service就感觉很混乱啊?虽然确实这样service层的代码可读性还更高了,毕竟调dao层很多次代码也不好看 <p>eg.先需要查表a的全部和表b的一个字段,我是写了个select * from a,...
  • 遇到的问题是:quartzy中不能使用spring注入的方式注入dao层和service层,原因是spring在加载的时候先加载quarzy,后加载bean。查看了一下源代码:org.springframework.scheduling.quartz.JobDetail
  • 谈一谈我对dao层和Service层的理解: &lt;wbr&gt;&lt;/wbr&gt; dao层: 最基本的CRUD操作,方法体里的内容一两句代码搞定。如this.save(student)等等。 &lt;wbr&gt;&lt;/wbr&gt...
  • 来自投稿 编译:覃佑桦https://dzone.com/articles/what-java-dao-layer-is-best-for-your-project本文将带您浏览比较最受欢迎Java数据库访问框架(DAO层)。假设您正在开发一个Java程序,有许多办法可以让您的应用...
  • java中dao层和service层的区别,为什么要用service?

    万次阅读 多人点赞 2016-05-20 11:28:47
    首先解释面上意思,service是业务dao是数据访问。 呵呵,这个问题我曾经也有过,记得以前刚学编程的时候,都是在service里直接调用daoservice里面就new一个dao类对象,调用,其他有意义的事没做,也不明白...
  • 举个例子,用DAO接口,那么持久用Hibernate,还是用iBatis,还是 JDBC,随时可以替换,不用修改业务层Service类的代码。 不用接口的话,假如修改了dao中的代码,因为service引用了dao中的类,那么也要改变service...
  • dao层和service层中对应操作

    千次阅读 2018-11-23 15:33:34
    进行代码检查的时候,被同事发现了一个问题,dao层中不管是update,insert,delete还是select操作,统一用的是,但是我在使用的时候结果并没有错误,但为了规范,在此做一下总结,贴出代码留个教训。 1、select操作...
  • Dao层和Service层设计

    2015-07-21 01:18:00
    1、Dao接口 public interface IBaseDao<T, ID extends Serializable>{  public abstract Serializable save(T t); /*其他接口*/ } 2、StudentDao接口 public interface IStudentDao extends...
  • springmvc 中dao层和service层的区别

    万次阅读 2016-05-16 09:18:41
    首先解释面上意思,service是业务dao是数据访问。这个问题我曾经也有过,记得以前刚学编程的时候,都是在service里直接调用daoservice里面就new一个dao类对象,调用,其他有意义的事没做,也不明白有这个有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,886
精华内容 1,954
关键字:

dao层和service层