dao与service中代码的区别,请大家注意是代码的区别,因为我现在看到的代码是dao中代码和service中代码是几乎一样,我想问问dao与service中代码是不是一般直接将dao中代码复制到service就可以了。谢谢!
------解决思路----------------------
dao是把数据库的数据封装成一个对象,service是把相关联的到封装到一起,是处理业务逻辑的,service里包含dao。应该不会像你说的一模一样吧。
------解决思路----------------------
dao只负责和外界交互的那一小段。。
最主要的逻辑方面的都写在service里面。
如果你感觉两层代码写的都几乎一样的话,只能说明代码本身写的不规范。
------解决思路----------------------
区别就是你家客厅门和你卧室门的区别
------解决思路----------------------
比如你有发表文章的功能, 在daoImpl 里面就是 xxxdaoImpl.addArticle(文章){添加文章到数据库代码}
在serviceImpl里面就是 xxxserviceImpl.addArticle(文章){
验证用户登录, 验证用户是否有权限发表文章, 等等逻辑
然后再 掉xxxdaoImpl.addArticle(文章); 保存
保存完之后, 再其他逻辑, 比如,通知别人你发表了文章 等等.
}
------解决思路----------------------
真正规范的dao层的写法就是对表中的数据做增删改查的功能实现。而service层是对dao层关联的表的增删改查的业务处理。dao层最好不要出现类似if...else等逻辑语言,而service层是逻辑组合操作的层。进一步说action层做的只是数据的转发派送,也不应该出现具体的逻辑的业务。
------解决思路----------------------
你看到的一模一样的话那就是说明你看到的东西没有很好的遵守软件开发的一些规则!
要考虑到可维护性,可拓展性!
一般dao是数据库访问层,和数据库直接打交道的。
service中引用dao,处理具体业务逻辑。
------解决思路----------------------
dao 层是直接和数据库交流的,是数据持久层,而service是做逻辑处理的,如果没有逻辑处理要求,其实看上去差不多,分层是为了把dao和和逻辑处理分开,使得代码更好的可读性和维护
------解决思路----------------------
dao层是数据库访问,没有任何的业务逻辑,dao层主要是为了隔离数据库
service是你的业务需求的代码实现,再service层的代码执行完之后有时候需要持久化数据或修改所以就要调用dao接口持久数据
------解决思路----------------------
不一样的。通俗点说吧,dao就是简单的增删改查,service是将这些简单的办法进行组合,实现更复杂的功能
------解决思路----------------------
一样个鸟啊。
你在dao层写了一个
public User load(String username) {
// TODO Auto-generated method stub
Connection con =null;
PreparedStatement ps=null;
ResultSet rst=null;
User u=null;
try {
con=DbUtil.getCon();
String sql="select * from t_user where username=?";
ps=con.prepareStatement(sql);
ps.setString(1, username);
rst=ps.executeQuery();
while(rst.next()){
if(u==null) u=new User();
u.setName(rst.getString("username"));
u.setPassword(rst.getString("password"));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
DbUtil.close(con);
DbUtil.close(ps);
DbUtil.close(rst);
}
return u;
}
到了service就变成了
public User load(String username){
return userDao.load(username);
------解决思路----------------------
dao层是数据库访问,没有任何的业务逻辑,dao层主要是为了隔离数据库
service是你的业务需求的代码实现,再service层的代码执行完之后有时候需要持久化数据或修改所以就要调用dao接口持久数据
------解决思路----------------------
dao是直接于数据库做交互的,所有的sql组装,执行sql,返回结果集都是在dao中完成的,但是service可不是做这些的,service主要做的事情是就把你的具体的业务逻辑分解,分解成一个个小模块,小模块最终要成功执行就要对数据库操作,那么接下来的就是调用dao了。不知道卤煮明白没有?
------解决思路----------------------
还有一点,就是当service里面一个个分解后的模块的执行成功后,把最终的一个结果集返回给前台,再就是一般事务控制也是在service层,在这里有任何一个小模块出现异常,事务都必须要回滚。
------解决思路----------------------
其实,就是分开来存放,分层其实就是分文件夹。存放的都是文件。
dao是Data access object,数据访问对象,主要是进行数据库访问的
service是服务的意思,主要是将数据提供给固定业务逻辑使用的代码
如何理解一段代码放在哪个位置,不是说固定不变的,只能适合这个环境的。
------解决思路----------------------
说的实际点吧,
dao只管处理数据库的逻辑,比如addObject,把一个对象写入库。
而sevice层和业务相关,比如addUser,把一个用户数据写入库。传参类型也是不一样的。这里传入的是业务对象User。
------解决思路----------------------
1、dao就是操作数据库,比如插入、删除等,很单一的功能;
2、service是针对某个业务
举例:有两张表,班级和学生,其中班级表中有该班学生人数的字段;如果新加一个学生,肯定是插入学生表后再修改班级表中的该班学生人数。
把这两个dao都放在一个servcie中并加事务,如果插入学生表时正常,修改班级人数时报异常了,那么插入学生表的记录会被回滚,保证一致性。如果是两个service中分别插入和修改,那么插入成功后,就算修改报异常事务也提交了,导致数据库不一致。
小结:servcie对应一个操作,不一定是一个数据库操作。一般在servcie上加事务。
------解决思路----------------------
部分是正常的,不可能全部都这样。
------解决思路----------------------
dao是持久化的和数据库直接打交道,service是处理数据的,也就是说aDao.getValue()得到1,在从bDaogetValue()得到2,然后再service中处理数据或者其他的什么业务3=1+2,最后在service中调用cDao.update(3对象),就行了。
如果service和dao一样说明业务很简单,只需要一个dao就能做到取,更新了
------解决思路----------------------
Dao里面写的是:修改一条数据
service里面写的是:把这条数据的状态改成‘1’
------解决思路----------------------
dao 和 service 正常来讲是不一样的,dao是数据访问层,是直接处理对数据库的增删改查。而service 主要是进行业务逻辑的处理。如果你的service 和 dao 代码完全一样,那根本没有层次感,而且以SSH框架为例,对于service,dao的配置都是基本固定的,它们对应的事件事务的管理都是需要配置的。