java开发时为啥要dao和service都是model层吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java开发时为啥要dao和service都是model层吗?相关的知识,希望对你有一定的参考价值。

dao层:dao层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表、某个实体的增删改查
service层:service层叫服务层,被称为服务,肯定是相比之下比较高层次的一层结构,相当于将几种操作封装起来。

service层要使用接口来定义有以下几点好处:
1、在java中接口是多继承的,而类是单继承的,如果需要一个类实现多个service,用接口可以实现,用类定义service就没那么灵活。
2、要提供不同的数据库的服务时,只需要面对接口用不同的类实现即可,而不用重复地定义类。
3、编程规范问题,接口化的编程为的就是将实现封装起来,然调用者只关心接口不关心实现,也就是“高内聚,低耦合”的思想。

想要了解更多有关Java开发的相关信息,推荐咨询千锋教育。北京千锋互联科技有限公司(下面简称“千锋教育”),成立于2011年1月,立足于职业教育培训领域,公司现有教育培训、高校服务、企业服务三大业务板块。教育培训业务分为大学生技能培训和职后技能培训;高校服务业务主要提供校企合作全解决方案与定制服务;企业服务业务主要为企业提供专业化综合服务。
参考技术A dao是数据访问层。DAO(Data Access Object) 数据访问对象是第一个面向对象的接口.
service是业务层,负责所有的业务逻辑处理。
model属于数据实体模型。和数据库的数据字段是基本对应的,model也可以增加一些数据库没有的虚拟字段,帮助处理业务。
这样分层的好处是降低程序耦合度。
参考技术B model是模型的意思,顾名思义,model也只能和实体打关系!它和dao和service有神马关系?!
一般service是业务逻辑处理,dao是数据库访问层

java web项目中dao的接口,实现类和service接口,实现类区别

dao实现类里已经完成了基本的CRUD操作,为什么不在jsp页面中直接使用这些dao类呢,而是又写个service类接口和实现方法,例如:
public void deleteBook(String bookId)
Books book=booksDao.getBook(bookId); booksDao.deleteBook(book);
service中的方法还不是来自于dao类吗,为什么多此一举?难道这样做有什么好处?

Dao是数据访问层,用来保存数据。

Service是业务逻辑处理的。

 我们开发程序的目的是为了完成业务功能, 理想的情况下程序中的每一条语句都应该是与业务直接相关的, 例如程序中不应该出现连接数据库, 读取某个字段等纯技术性的操作, 而应该是得到用户A的基本信息等具有业务含义的操作. dao(data access object)层存在的意义在于将与数据持久化相关的函数调用剥离出去, 提供一个具有业务含义的封装层. 原则上说, dao层与utils等帮助类的功能非常类似, 只是更加复杂一些, 需要依赖更多的对象(如DataSource, SessionFactory)等. 如果不需要在程序中屏蔽我们对于特定数据持久层技术的依赖, 例如屏蔽对于Hibernate的依赖, 在dao层我们没有必要采用接口设计. 一些简单的情况下我们甚至可以取消整个dao层, 而直接调用封装好的一些通用dao操作函数, 或者调用通用的EntityDao类等.
    程序开发的过程应该是从业务对象层开始的, 并逐步将纯技术性的函数调用剥离到外部的帮助类中, 同时我们会逐渐发现一些业务操作的特定组合也具有明确的含义, 为了调用的方便, 我们会把它们逐步补充到service层中. 在一般的应用中, 业务逻辑很难稳定到可以抽象出接口的地步, 即一个service接口不会对应于两个不同的实现, 在这种情况下使用接口往往也是没有必要的.
    
    在使用spring的情况下原则上应该避免使用getBean的调用方式, 应该尽量通过注入来获得依赖对象, 但有时我们难免需要直接获取业务对象, 在不使用接口的情况下可以采用如下方式

    class TaskService
        public static TaskService getInstance()
            return (TaskService)BeanLoader.getBean(TaskService.class);
        
    

    在程序中我们可以直接使用TaskService.getInstance()来得到TaskService对象.通过命名规范的约定, 我们可以从类名推导出spring配置文件中的对象名, 因而不需要使用一个额外的硬编码字符串名.

参考技术A 当然有好处了,现在你感觉多此一举是因为需求业务少,若是一个大项目要大量的需求,如果写在一个service里到时会很乱的,写在一个dao类里,可以更清晰更加条理,现在要养成习惯,在工作时会明白的! 参考技术B 你这是没涉及到缓存,如果涉及到的话,service还有对缓存的操作,这样service可以把对缓存和DB的操作封装起来,是的你在上层调用时更清晰。如果只涉及dao,service的意义确实不大。

以上是关于java开发时为啥要dao和service都是model层吗?的主要内容,如果未能解决你的问题,请参考以下文章

java中dao层和service层的区别,为啥要用service

java三大框架为啥要一个实现类和一个接口???

Java开发建类dao,modal,service,impl,util包通常是啥意思,啥功能的类放在其下

java中dao层和service层的区别是啥

java项目中都有哪些层?我知道有dao、service、util,还有啥?作用都是啥?

java中dao层和service层的区别是啥?