`
canonical
  • 浏览: 366364 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于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配置文件中的对象名, 因而不需要使用一个额外的硬编码字符串名.

分享到:
评论

相关推荐

    自动生成dao,service

    标题 "自动生成DAO和服务层代码" 指的是在软件开发过程中使用自动化工具来快速创建数据访问对象(DAO)和业务服务层(Service)的代码。这种做法可以显著提高开发效率,减少手动编写重复代码的时间,使开发者能够更...

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

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

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

    区分Action、Service和Dao功能 在软件开发中,Action、Service和Dao都是常用的架构模式,但是很多开发者对这些概念的理解和使用却存在一定的混淆。因此,本文将对Action、Service和Dao的功能进行详细的区分和解释。...

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

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

    hibernate4 通用dao,service

    由于没有具体的文件列表,我们无法详细讨论每个文件的内容,但根据标题和描述,我们可以推断这是一个关于使用Hibernate4创建通用DAO和Service的教程或资源,旨在帮助Java开发者理解和应用这种模式来提高开发效率。...

    一次性生成dao和service层

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

    Service层和DAO层解析

    Service层和DAO层是软件开发中常见的两种设计模式,主要用于分离业务逻辑和数据访问操作。在Java Web开发中,它们通常被应用于三层架构或MVC(Model-View-Controller)模型中。 DAO(Data Access Object)层是负责...

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

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

    一个通用的dao和service包

    service接口 package com.erp.service; ... import ...这样只需要向dao中注入pojo的完整包名,你就能拥有一个pojo的dao,并且在你的service接口和实现类里不用写一句代码. 轻松持久化你的entity pojo

    dao+service+servlet+jsp实现留言板(添加、查看)

    本项目采用DAO(数据访问对象)、Service层以及Servlet和JSP技术,按照MVC(模型-视图-控制器)模式来实现留言板功能,包括留言的添加和查看。 1. **MVC模式**: MVC是一种广泛应用于Web应用开发的设计模式,它将...

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

    Java代码生成器是一种工具,主要用于自动化编程过程中重复性较强的部分,比如DAO(数据访问对象)层和服务(Service)层的代码编写。DAO层是应用程序与数据库交互的主要接口,而Service层则封装了业务逻辑,两者在...

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

    在SSM框架中,mapper、dao、service、controller等相关文件是非常重要的组件,它们之间的关系和调用顺序非常关键。下面,我们将对这些组件进行详细的解释和整理。 Mapper文件 Mapper文件是MyBatis框架中的一个核心...

    Servlet使用MVC模式(Dao\Service\Servlet)增删查改

    在这个名为"Servlet使用MVC模式(Dao\Service\Servlet)增删查改"的小程序中,我们将深入探讨如何利用这些组件来实现对MySQL数据库的操作。 **模型(Model)** 模型层是应用程序的核心,负责处理业务逻辑和数据访问...

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

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

    Mybatis(dao)缓存|mybatis+redis(dao+service)缓存验证

    ### Mybatis(dao)缓存与mybatis+redis(dao+service)缓存验证 #### 一、Mybatis缓存机制概述 Mybatis提供了一级缓存和二级缓存两种缓存机制,这两种缓存机制有助于提高数据访问的效率。 **1.1 一级缓存** 一级...

    数据库表生成domain,dao,service,controller工具

    数据库表生成domain, DAO, service, controller工具是一种高效开发辅助软件,主要针对Java Web应用程序开发。这类工具的主要目的是简化从数据库模型到应用层代码的转换过程,帮助开发者快速生成符合MVC(Model-View-...

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

    Spring的IoC(Inversion of Control)容器可以管理Dao和Service的生命周期,通过依赖注入(Dependency Injection)帮助我们轻松地组装和测试组件。同时,Spring的AOP(Aspect-Oriented Programming)特性可用于事务...

    采用Java Servlet +Service+DAO实现用户登陆注册

    采用Service+Service+DAO实现用户注册登陆 数据库:SQLite 代码:JSP 目的要求 (1)掌握Servlet使用技术; (2)掌握开发平台的分层技术;...(1)Servlet+Service+DAO开发模式的理解; (2)DAO的封装。

    Web服务器端在Action、dao、service之外实现spring注入

    我们在开发过程中经常会发生spring注入错误或失败的情况,其实Web服务器端在Action、dao、service包之内是很容易实现的,在这些包之外实现spring注入就不容易了,总是出错,其实根本原因是无法获得相应的spring上...

Global site tag (gtag.js) - Google Analytics