关于SSH的Service层和Dao层。。。大家讨论一下。。

hongseyouyang 2010-09-13 03:05:17
ssh中Service层和Dao层一般都是实现接口。也就是我们经常说面向接口编程。也可以降低耦合性。

service层:处理业务逻辑
dao层:数据库持久化

有个疑问: Service层和Dao层不实现接口不行吗。。 直接就写类不行吗。。。

实现了接口,也许某一天我要从hibernate改为jdbc了,直接就将实现接口的类的方法改了就行了。

如果我不实现接口,直接改类的方法不也一样吗?

大家说说有什么区别。。。。。
...全文
883 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuhukui8369 2012-01-03
  • 打赏
  • 举报
回复
不需要吧
j_coffees 2011-08-22
  • 打赏
  • 举报
回复
有点意思..菜鸟想问下dao层的接口和service层的接口方法名参数需相同吗?以前学的一点是直接用dao的实现类了,对service层还不理解。。弱智问题,勿喷。。
jdjwxj 2010-09-14
  • 打赏
  • 举报
回复
我个人觉得,写接口另外一个好处是对于开发的,可能很多人觉得麻烦了,但是,spring是面向方面变成的框架,也就是说,你做dao层,我做service,我不需要知道你dao怎么实现,我只要调用你的借口就可以了,这样可以进行同时开发,而如果不用借口,直接用实现类的话,我们是不能够同时进行开发的,service必须要等到dao开发完才可以。不知道这样说对不对,我个人这么理解。
舞黯然 2010-09-14
  • 打赏
  • 举报
回复
开闭原则,对扩展开放,对修改关闭。
zn85600301 2010-09-14
  • 打赏
  • 举报
回复
哎 服了众神了
首先我想 先问下 你用的是SSH 换数据库和代码有关系吗 你的HIBERNATE配置文件也算是在SERVICE和DAO里?我做项目开发时 10G 部署时11G 一点没问题。
还有楼上说不分SERVICE的 大侠,我请问下 一个业务逻辑里操作多个数据库的表 你怎么保证他们同时成功,你不要在SERVICE里面加事物? 你的DAO这么强大?可否贴出来看看?
之所以分层 就是为了协调开发 提高开发效率和代码的耦合度,分层是思想模式,你觉得麻烦 是你没真正碰到复杂的业务。
大人们 饶命 小的该死 满嘴放炮
菖蒲老先生 2010-09-14
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 jdjwxj 的回复:]
我个人觉得,写接口另外一个好处是对于开发的,可能很多人觉得麻烦了,但是,spring是面向方面变成的框架,也就是说,你做dao层,我做service,我不需要知道你dao怎么实现,我只要调用你的借口就可以了,这样可以进行同时开发,而如果不用借口,直接用实现类的话,我们是不能够同时进行开发的,service必须要等到dao开发完才可以。不知道这样说对不对,我个人这么理解。
[/Quote]
硬要这么说也有点道理,不过好像现在很少公司分service,dao层来让不同人员开发吧,至少我还没见过。
mythling 2010-09-14
  • 打赏
  • 举报
回复
一切为了可扩展,留后路。
lzw0286 2010-09-14
  • 打赏
  • 举报
回复
为数据访问层和业务逻辑层分别定义一族接口,业务逻辑层不依赖具体的数据访问层,而是仅依赖数据访问层的接口族。如此一来,当要更换数据库时,我们就不必改写整个业务逻辑层,因为业务逻辑层里根本没有任何数据访问层中的具体类,而全是通过接口实现的。
这样会更容易扩展。。。
当修改某一层时,只需要关注该层,而不需要更改别的层的代码。。。。
flybird 2010-09-14
  • 打赏
  • 举报
回复
mark 学习
yaojj_147258369 2010-09-14
  • 打赏
  • 举报
回复
面向接口的便于管理,在调用的时候直接调用接口就好了,如果你写个类的话,没调用一次就得new一个类,当new一个新类,就会给这个对象分配各地址;占有内存;
iijunlong 2010-09-14
  • 打赏
  • 举报
回复
小的项目用处的确不大,倒是写起来很麻烦,但最好还是遵循软件设计的开闭原则,对修改关闭,对扩展开放,如果dao层变化,只需扩展接口的实现,而不是去修改之前写的代码
Rick_ang 2010-09-13
  • 打赏
  • 举报
回复
即使买的是Oracle的数据库,难道不会更新版本?如果你的数据库从10g升级到11g了,对于业务逻辑来说完全是透明的,如果直接写类,恭喜你,请你重新修改和编译所有业务类
zzxiaoma 2010-09-13
  • 打赏
  • 举报
回复
写接口是为了扩展,如果软件不能扩展就等于死亡
bill_hai 2010-09-13
  • 打赏
  • 举报
回复
公司花了几十万或几百万买了oracle,又招了几个oracle的dba,哪能轻易就换成其他的数据库了

如果dao层用hibernate实现,也不会轻易换成jdbc或sqlserver来实现,那么多的类谁愿意去费事写呀
hchen1982 2010-09-13
  • 打赏
  • 举报
回复
小的项目感觉不多,大的项目就感觉到好处了。
hchen1982 2010-09-13
  • 打赏
  • 举报
回复
但是我个人觉得,一般写这个接口没什么用,因为一般一个接口只有一个实现。一般也不会从oracle转换到sqlserver。所以写了那么多接口有点脱裤子放屁的作用
hongseyouyang 2010-09-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bill_hai 的回复:]

在service层 只知道接口,并不关心具体的dao怎么实现,如果重写一个类的话,有了接口,就不用改service层的代码了,只要改一下spring的注入配置文件就ok了。


但是我个人觉得,一般写这个接口没什么用,因为一般一个接口只有一个实现。一般也不会从oracle转换到sqlserver。所以写了那么多接口有点脱裤子放屁的作用
[/Quote]

有点意思 哈哈
bill_hai 2010-09-13
  • 打赏
  • 举报
回复
写接口是为了以后扩展用的,相应的增加了复杂性,如果几乎不存在dao的扩展(比如从oracle扩展到mysql),那写接口意义也就不大了

小弟拙见,只是个人理解
HuaLikeDotNet 2010-09-13
  • 打赏
  • 举报
回复
当然写接口,面向接口编程多好啊
bill_hai 2010-09-13
  • 打赏
  • 举报
回复
在service层 只知道接口,并不关心具体的dao怎么实现,如果重写一个类的话,有了接口,就不用改service层的代码了,只要改一下spring的注入配置文件就ok了。


但是我个人觉得,一般写这个接口没什么用,因为一般一个接口只有一个实现。一般也不会从oracle转换到sqlserver。所以写了那么多接口有点脱裤子放屁的作用
加载更多回复(8)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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