java菜鸟实习对于为什么Service 和dao 要这样设计理解不是很透彻,希望有大神可以指导一下这样设计的好处,尽量讲的详细一点 编程设计javaEE service dao 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 BaseDAO一般是提供从数据库 增加、删除、修改记录、查询所有记录、查询符合某个条件记录、取得某条记录等方法的底层数据操作自定义类。由于我们可能操作多个数据库表,这样就需要为每个表提供一个操作他的类 xxDAO, 这些DAO继承BaseDAO 就可以省略很多重复代码(从数据库 增加、删除、修改记录、查询所有记录、查询符合某个条件记录、取得某条记录等方法的代码)...然后因为DAO 与 Service分开 是因为, DAO是直接针对数据库进行操作的, 而Service是进行业务操作的,处理业务逻辑之用。如:添加一个用户, DAO只需要用来向数据库插入用户记录,而Service考虑的是:插入用户,可能同时还需要添加 角色,可能还需要做其他业务操作等等... 其实现在市面上流行的 MVC模式 ,你可以去好好理解一下。 这样开发的好处就是层次清晰,使项目的扩展性更好... 首先谢谢你的回复,就是说Service 里面除了调用dao来完成数据的持久化之外,可能还会有其他的操作,我举个例子不知道说的对不对,就比如说我先在有个 ajax请求需要得到用户列表(要得到json数据) 那么我的dao调用方法得到的是一个list集合,而service中出了调用dao这一层得到list集合后,还应该做相应的数据处理(转化成json数据),同理其它的一些的业务逻辑的操作,或者针对 dto 或者事务的处理都应该放在service 这一层吗?? 我目前对业务逻辑的认识比较模糊 有那么一丝道理...但是一般查询没有什么大的业务逻辑,可以直接用action 或者 controller来处理。 一般复杂的都在添删改里面... 总之 各有各用~ 事物处理的确都应放到service里面。 业务逻辑很模糊很正常,等你工作时间长了,接触到的东西多了就会明白。 service,例如银行一个转账的模式,你这边转出需要减金额,那边进账需要加金额,但是这个业务操作必须为一个操作体,所以一般就要在业务层声明一个事务去提交,.而dao层只会给你提供与数据库交互的功能 说白了 dao层什么都不用关心 他只负责select update delete insert具体什么时候做这些操作 怎么做这些操作 都由Service来处理。打个比方,dao就是士兵,Service就是将军。一切听指挥,只做你该做的。 dao层只做数据库交换的工作。service层做业务相关处理。分开就是为了让代码更清晰。逻辑出问题就在service找问题,数据库,sql有问题就在dao层找问题 不要钻进牛角,这只是一种分层结构,类似公安局,司法院,民政府,每个部门负责一个模块,也可以放一起,但是很乱;而mvc模式,dao层只用来处理与数据库的交互,service我只处理分发请求,求你给我什么请求,我去找对应处理你这个请求的方法,大家各负责一个模块; 1你的问题可以拆分三个问题一.继承问题。例如UserDaoImpl 等等只要继承BaseDaoHiber 这个楼上已经说了很多了。节省代码。(我就不详细说了)2.面向接口编程解耦合,方便维护,扩展.一种规范约束方便团队开发范例:JAVA的JDBC,sun公司只写一个规范出来。你们数据库厂商自已去实现驱动。(规范约束)3.mvc分层模式区分层次的目的即为了“高内聚,低耦合”的思想。有利于标准化,分层开发是为了把代码区分开来。放在一起多乱啊。也有一部分是为省代码的原因补充一个例子:例如业务是转帐100块。手续费2块。这是业务问题。在SERVICE层写。从A去掉100块。B增加100百。去掉A的2元手续费。这是一个原子性的所以事务必须放在SERVICE.楼主问题解决.可以百度三层架构,面向接口编程,继承。问题解决 类似QQ邮箱的多文件上传下载在线预览 java 数组 自我介绍时如何介绍,当问到项目经历时如何面试,问到细节问题回答不上时怎么办?如何描叙团队沟通? 请帮我看看,这个是什么技术? java 存储过程中如何同时获得结果集和返回值 ? tapestry的问题!!!!!!!!! hibernate问题! 怎样把log4j产生的文件写入数据库? struts真的能使表示层和逻辑层分离吗? 怎么样配置jboss-4.0.0DR1_tomcat-4.1.24 Eclipse 工程发布到 tomcat 报错 java socket 编程
由于我们可能操作多个数据库表,这样就需要为每个表提供一个操作他的类 xxDAO, 这些DAO继承BaseDAO 就可以省略很多重复代码(从数据库 增加、删除、修改记录、查询所有记录、查询符合某个条件记录、取得某条记录等方法的代码)...然后因为DAO 与 Service分开 是因为, DAO是直接针对数据库进行操作的, 而Service是进行业务操作的,处理业务逻辑之用。
如:添加一个用户, DAO只需要用来向数据库插入用户记录,而Service考虑的是:插入用户,可能同时还需要添加 角色,可能还需要做其他业务操作等等... 其实现在市面上流行的 MVC模式 ,你可以去好好理解一下。 这样开发的好处就是层次清晰,使项目的扩展性更好...
事物处理的确都应放到service里面。 业务逻辑很模糊很正常,等你工作时间长了,接触到的东西多了就会明白。
具体什么时候做这些操作 怎么做这些操作 都由Service来处理。
打个比方,dao就是士兵,Service就是将军。一切听指挥,只做你该做的。
service层做业务相关处理。
分开就是为了让代码更清晰。
逻辑出问题就在service找问题,数据库,sql有问题就在dao层找问题
一.继承问题。例如UserDaoImpl 等等只要继承BaseDaoHiber
这个楼上已经说了很多了。节省代码。(我就不详细说了)
2.面向接口编程
解耦合,方便维护,扩展.一种规范约束方便团队开发
范例:JAVA的JDBC,sun公司只写一个规范出来。你们数据库厂商自已去实现驱动。(规范约束)
3.mvc分层模式
区分层次的目的即为了“高内聚,低耦合”的思想。
有利于标准化,分层开发是为了把代码区分开来。放在一起多乱啊。也有一部分是为省代码的原因
补充一个例子:例如业务是转帐100块。手续费2块。这是业务问题。在SERVICE层写。从A去掉100块。B增加100百。去掉A的2元手续费。这是一个原子性的所以事务必须放在SERVICE.
楼主问题解决.
可以百度三层架构,面向接口编程,继承。问题解决