J2EE开发中DAO层,关于DAO接口的使用的不解

lzkkevin 2012-03-08 11:03:31
在J2EE的DAO层开发中,很多人爱写一个BaseDao接口,里面写上一个基本方法的声明,然后其他DAO类都实现该接口,使用的时候用 BaseDao dao = new UserDao();

但是在具体的DAO类中,对数据的处理方法不尽相同,肯定有些DAO类没有该方法,有些DAO必需该方法,这是应该怎么办??

如果在具体使用的时候 只是些 USerDao dao = new UserDao(),那接口的意义何在呢??

对这些一直很不解,,求高人解答。。。。
...全文
304 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrzhangasmile 2012-10-16
  • 打赏
  • 举报
回复
繼承不是更好、繼承BaseDao就可以了 、想用裏面的東西就直接 super一下、、new一個的話 、對系統就多了點負荷、你new一個對象、那麼他就會在內存裏面開閉一些空間 、
所以以後做項目最好少new
wyx100 2012-03-08
  • 打赏
  • 举报
回复
接口有的时候只起到一个规范的作用,有的时候不用接口回调也是可以的,要灵活
ilovefzq 2012-03-08
  • 打赏
  • 举报
回复
个人觉得:接口有的时候只起到一个规范的作用,有的时候不用接口回调也是可以的,要灵活,向这种情况来说我就不用baseDao,如果一定要用的话,那只能UserDao dao = new UserDao();
lzkkevin 2012-03-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 moonscope 的回复:]

就是dao层里面的接口(不是接口的实现类),所有公共的方法的集合了呗!
[/Quote]

所有公共方法的集合,,但是具体调用某个实现类的时候还得

ImplDao dao = new ImplDao();声明实现类自己的对象

那接口有什么用呢?
lzkkevin 2012-03-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sweat89 的回复:]

这就是多态,接口的作用吧。。
如果你到后面还需要一个XxDAO ,里面需要BaseDao的方法,,你该怎么写?
[/Quote]

BaseDao是接口,对于大部分DAO类里,肯定都会有 增删改查等基本的实现方法,但是肯定也会有其他的不统一的方法,那这么方法怎么办呢?
时光荒羽 2012-03-08
  • 打赏
  • 举报
回复
就是dao层里面的接口(不是接口的实现类),所有公共的方法的集合了呗!
sweat89 2012-03-08
  • 打赏
  • 举报
回复
这就是多态,接口的作用吧。。
如果你到后面还需要一个XxDAO ,里面需要BaseDao的方法,,你该怎么写?
lzkkevin 2012-03-08
  • 打赏
  • 举报
回复
求各位大大帮忙解答,小弟在线等。。。。多谢
dxqrr 2012-03-08
  • 打赏
  • 举报
回复
接口,灵活的基石
zuxianghuang 2012-03-08
  • 打赏
  • 举报
回复
不用new吧,通过接口注入吧,
要new 也是 接口 对象 = new 实现类
hello_ljfbest 2012-03-08
  • 打赏
  • 举报
回复
工厂模式,spring中有用……
billlllyove 2012-03-08
  • 打赏
  • 举报
回复
继承接口 实现多态 具体项目中肯定多半是spring来控制 很方便的
LucEaspe 2012-03-08
  • 打赏
  • 举报
回复
这个除非你做项目开发,不然你难以体会其中的玄妙。
简单说 在SSH中,你用Spring 管理的时候,如果有接口,你只需要修改xml文件就可以更换实体的功能,比修改源代码好的多。
设计模式原则,针对接口编程,避免针对实现编程。
小V小V志 2012-03-08
  • 打赏
  • 举报
回复
多個dao當然要有多個 接口了
如果是硬要找到多個 Dao的共同集合,那就是crud了,其他的當然是根據需要來設計了,當然也要用到泛型
yixiaogang109 2012-03-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 iisgirl 的回复:]
一般:
1、public interface BaseDAO 裏面寫公用得crud,注意,返回對象不是具體得某個bean,給成Object。
2、public abstract class BaseDAOImpl implements BaseDAO 給出BaseDAOImpl,實現BaseDAO裏面的方法。
3、public class UserDAOImpl extends BaseDA……
[/Quote]
同意
昨日凡阳 2012-03-08
  • 打赏
  • 举报
回复
一般:
1、public interface BaseDAO 裏面寫公用得crud,注意,返回對象不是具體得某個bean,給成Object。
2、public abstract class BaseDAOImpl implements BaseDAO 給出BaseDAOImpl,實現BaseDAO裏面的方法。
3、public class UserDAOImpl extends BaseDAOImpl implements CRInfoDAO

CRInfoDAO寫你自己獨有的方法。
這也是為什麽要設置BaseDAO得根本所在。
框架说白了就是JAVA工作者多年以来总结出的一些开发标准。让我们可以以成功的经验模式来开发我们自已的系统,一般使用框架的好处是 ·在好的框架下,开发者只需要写一些必须的代码;他们不需要直接接触底的API。 这一点很重要。 ·经过良好设计的框架可以为程序提供清晰的结构并且提高程序的内聚性。好清晰的结构使得其他人可以更容易加入项目。 ·一个容易使用的框架可以通过一些例子和文档为用户提供最佳实践。 ·采用成功的框架的代码比自己的代码容易测试 J2EE本身提供了一些框架。比如, Enterprise Java-Beans (EJB) container或者 Servlet engine 而这些框架一般在小工程我们都不会使用,会让我们把大量的时间浪费在开发框架上。 而现在比较流行开源框架,主要是struts,hibernate,spring等 比如struts是在原有mvc基础上实现在代码分离等功能,非常好用。 而hibernate可以把我们的关系型数据库转换成我们在JAVA的面像对像来使用。从而让我们在开发时不需要直接写SQL语句,比如database.getName();就可以直接把数据库的用户名取出来。 Spring J2EE框架被大规模地运用到项目,而项目总要负责这些框架以及自己业务代码的连接,使之真正融合到一起。Spring就是专注于这个问题的,它和Hibernate融合的很好。 这三种框架在一起并不冲突,所以现在最常用的框架就是 struts+hibernate+spring就像我们盖房子一样,先把框架搭好,我们在在上面写代码就很规范。 Struts框架介绍 : Struts只是一个MVC框架(Framework),用于快速开发Java Web应用。Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的 Action,也为V(View)提供了一系列定制标签(Custom Tag)。但Struts几乎没有涉及M(Model),所以Struts可以采用JAVA实现的任何形式的商业逻辑。 Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),用以构造我们所需要的M(Model)。在此基础之上,Spring提供了AOP(Aspect-Oriented Programming, 面向面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对Bean工厂的扩展ApplicationContext更加方便我们实 现J2EE的应用;DAO/ORM的实现方便我们进行数据库的开发;Web MVC和Spring Web提供了Java Web应用的框架或与其他流行的Web框架进行集成。 就是说可将两者一起使用,达到将两者自身的特点进行互补。 spring 框架介绍 : 它关注的领域是其他许多流行的Framework未曾关注的。Spring要提供的是一种管理你的业务对象的方法。 Spring既是全面的又是模块化的。Spring有分的体系结构,这意味着你能选择仅仅使用它任何一个独立的部分,而它的架构又是内部一致。 因此你能从你的学习,得到最大的价值。例如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象。 它的设计从一开始就是要帮助你编写易于测试的代码。Spring是使用测试驱动开发的工程的理想框架。 Spring不会给你的工程添加对其他的框架依赖。Spring也许称得上是个一站式解决方案,提供了一个典型应用所需要的大部分基础架构。它还涉及到了其他framework没有考虑到的内容。 尽管它仅仅是一个从2003年2月才开始的开源项目,但Spring有深厚的历史根基。 Spring架构上的好处 在我们进入细节之前,让我们来看看Spring能够给工程带来的种种好处: Spring能有效地组织你的对象,不管你是否选择使用了EJB。如果你仅仅使用了Struts或其他为J2EE的 API特制的framework,Spring致力于解决剩下的问题。 Spring能消除在许多工程常见的对Singleton的过多使用。根据我的经验,这是一个很大的问题,它降低了系统的可测试性和面向对象的程度。 通过一种在不同应用程序和项目间一致的方法来处理配置文件,Spring能消除各种各样自定义格式的属性文件的需要。曾经对某个类要寻找的是哪个 魔法般的属性项或系统属性感到不解,为此不得不去读Javadoc甚至源编码?有了Spring,你仅仅需要看看类的JavaBean属性

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧