为什么Service 和dao 设计的好处

J2EE 码拜 10年前 (2015-04-20) 1562次浏览 0个评论

为什么Service 和dao 设计的好处
             在公司实习了一段时间了,对于这样的service和dao的设计理解的不是很充分,希望有人能够解释一下:
为什么在dao的设计上会有一个BaseDao<T>的接口,里面定义了实体的一些基本的操作,然后会有一个BaseDaoHibernate<T>的实现类来实现BaseDao<T>接口并且扩展了HibernateDaoSupport ,最后其它的一些实体比如UserDao   等等都会像上图那样设计
            我目前是这样理解的,就是说有了一个BaseDao接口中定义了基本Entity通有的操作,然后BaseDaoHibernate 类实现了这些基本的操作,所以我们的其它实体UserDaoImpl 等等只要继承BaseDaoHiber类就不用把那些基本的操作再去实现一遍,这样简化了一些操作,然后就是在UserDao中我们可以增加某个实体特有的方法,让后再UserDaoImpl中去实现
           至于Service也预留了接口,我理解的作用就是跟基本的面向接口编程差不多。
           到底这样还有什么好处呢,希望有经验丰富的人能够讲解的详细一些,先谢谢各位了。

为什么Service 和dao 设计的好处
15分
BaseDAO一般是提供从数据库 增加、删除、修改记录、查询所有记录、查询符合某个条件记录、取得某条记录等方法的底层数据操作自定义类。
由于我们可能操作多个数据库表,这样就需要为每个表提供一个操作他的类 xxDAO, 这些DAO继承BaseDAO 就可以省略很多重复代码(从数据库 增加、删除、修改记录、查询所有记录、查询符合某个条件记录、取得某条记录等方法的代码)…

然后因为DAO 与 Service分开 是因为, DAO是直接针对数据库进行操作的, 而Service是进行业务操作的,处理业务逻辑之用。
如:添加一个用户, DAO只需要用来向数据库插入用户记录,而Service考虑的是:插入用户,可能同时还需要添加 角色,可能还需要做其他业务操作等等…     

其实现在市面上流行的 MVC模式 ,你可以去好好理解一下。   这样开发的好处就是层次清晰,使项目的扩展性更好…

为什么Service 和dao 设计的好处
首先谢谢你的回复,就是说Service 里面除了调用dao来完成数据的持久化之外,可能还会有其他的操作,我举个例子不知道说的对不对,就比如说我先在有个 ajax请求需要得到用户列表(要得到json数据) 那么我的dao调用方法得到的是一个list集合,而service中出了调用dao这一层得到list集合后,还应该做相应的数据处理(转化成json数据),同理其它的一些的业务逻辑的操作,或者针对 dto 或者事务的处理都应该放在service 这一层吗??  我目前对业务逻辑的认识比较模糊
为什么Service 和dao 设计的好处
有那么一丝道理…但是一般查询没有什么大的业务逻辑,可以直接用action 或者 controller来处理。  一般复杂的都在添删改里面… 总之 各有各用~ 
为什么Service 和dao 设计的好处
引用 2 楼 u010785969 的回复:

首先谢谢你的回复,就是说Service 里面除了调用dao来完成数据的持久化之外,可能还会有其他的操作,我举个例子不知道说的对不对,就比如说我先在有个 ajax请求需要得到用户列表(要得到json数据) 那么我的dao调用方法得到的是一个list集合,而service中出了调用dao这一层得到list集合后,还应该做相应的数据处理(转化成json数据),同理其它的一些的业务逻辑的操作,或者针对 dto 或者事务的处理都应该放在service 这一层吗??  我目前对业务逻辑的认识比较模糊

事物处理的确都应放到service里面。  业务逻辑很模糊很正常,等你工作时间长了,接触到的东西多了就会明白。  

为什么Service 和dao 设计的好处
很明显的三层阿,显示层,业务层,数据访问层,
为什么Service 和dao 设计的好处
10分
service,例如银行一个转账的模式,你这边转出需要减金额,那边进账需要加金额,但是这个业务操作必须为一个操作体,所以一般就要在业务层声明一个事务去提交,.而dao层只会给你提供与数据库交互的功能
为什么Service 和dao 设计的好处
恩恩,你举这个例子我真的有点感觉了,还是掌握的东西太少了
为什么Service 和dao 设计的好处
说白了 dao层什么都不用关心  他只负责select  update  delete  insert
具体什么时候做这些操作  怎么做这些操作 都由Service来处理。
打个比方,dao就是士兵,Service就是将军。一切听指挥,只做你该做的。
为什么Service 和dao 设计的好处
这三层主要是便于管理代码吧  时间长了就明白了
为什么Service 和dao 设计的好处
dao层只做数据库交换的工作。
service层做业务相关处理。
分开就是为了让代码更清晰。
逻辑出问题就在service找问题,数据库,sql有问题就在dao层找问题
为什么Service 和dao 设计的好处
不要钻进牛角,这只是一种分层结构,类似公安局,司法院,民政府,每个部门负责一个模块,也可以放一起,但是很乱;而mvc模式,dao层只用来处理与数据库的交互,service我只处理分发请求,求你给我什么请求,我去找对应处理你这个请求的方法,大家各负责一个模块;
为什么Service 和dao 设计的好处
15分
1你的问题可以拆分三个问题
一.继承问题。例如UserDaoImpl 等等只要继承BaseDaoHiber
  这个楼上已经说了很多了。节省代码。(我就不详细说了)
2.面向接口编程
解耦合,方便维护,扩展.一种规范约束方便团队开发
范例:JAVA的JDBC,sun公司只写一个规范出来。你们数据库厂商自已去实现驱动。(规范约束)
3.mvc分层模式
区分层次的目的即为了“高内聚,低耦合”的思想。
有利于标准化,分层开发是为了把代码区分开来。放在一起多乱啊。也有一部分是为省代码的原因
补充一个例子:例如业务是转帐100块。手续费2块。这是业务问题。在SERVICE层写。从A去掉100块。B增加100百。去掉A的2元手续费。这是一个原子性的所以事务必须放在SERVICE.
楼主问题解决.
可以百度三层架构,面向接口编程,继承。问题解决
为什么Service 和dao 设计的好处
恩恩,很详细,感觉有点方向了,谢谢各位的指导,以后有问题大家麻烦解答下

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明为什么Service 和dao 设计的好处
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!