java中如何调用DAO

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何调用DAO相关的知识,希望对你有一定的参考价值。

  DAO也是一个类,正常调用该DAO类进而的方法即可,应该了解一些大概的流程:

    servlet 调用 dao

    dao 调用 db

    db返回数据给dao封装成vo返回给servlet

    然后servlet转向到页面显示数据

参考技术A LZ,你这样想,其实DAO也是一个类,所以调用的时候其实跟调用其他类是一样的,当然如果你是在框架下的话,比如Spring,就可以通过属性注入的方式,另外,一般情况下DAO都是有逻辑层service来调用的...... 参考技术B 列 XXDao xxdao =new XXDao;
xxdao.xxx();(xxx()为XXDao的方法);
若有框架啊 例如spring 框架可以通过属性注入的方式:
private XXDao xxDao
参考技术C DAO,刨去他的逻辑意义,他就是一个 java类 ,这个类里面定义了n多方法,那么在java编程中如何去调用类里面的方法呢? 简单:(类名).(方法名); 参考技术D new XXXDao()
不能再简单了

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的主要内容,如果未能解决你的问题,请参考以下文章

Java项目,bean类,dao包,service包,action包,现在想用action调用数据库中数据,数据在bean里有get set

怎么在service中调用activity中的handler

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

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

windows service调用FindWindow 怎么不行

如何在 servlet 中调用 DAO 方法来提取查询结果