SSH的一个疑问

AslenG 2011-10-06 09:47:49
据说MVC模式中,Dao层不涉及任何业务代码,所以我的Dao层只提供了CRUD本类的几个方法,但这样一来所有业务就移到业务层了其中包括一些需要操作数据库的方法,那不是要在业务层继承HibernateDaoSupport类了吗,

比如:
我根据用户ID查询其下所有订单的方法,这个方法是放到Dao层还是Service层?

如果放到Service层,那业务层不也充当了持久化的角色了,不矛盾了吗,就这边疑惑承蒙各位解答?
...全文
175 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
AslenG 2011-10-12
  • 打赏
  • 举报
回复
懂了 谢谢各位。
scrack 2011-10-08
  • 打赏
  • 举报
回复
严格分层的话 就在 dao层 查询获取数据 再service层去调用 dao
可能代码有点冗余 但是这样是严格分层的 如果项目大的话 就这样做 小项目就无所谓了
AslenG 2011-10-08
  • 打赏
  • 举报
回复
,这样说吧,现在有个客户和订单两个表,我想根据用户ID查询订单,这个算是业务吧,这个方法应该放在Dao层还是Service层里呢?
五哥 2011-10-07
  • 打赏
  • 举报
回复
业务 --当然是处理业务的了 ,数据获取当然不在这里啦 ,数据获取应该在Dao里面吧
tracy_junzi 2011-10-07
  • 打赏
  • 举报
回复
放在service层 通过DAO层进行数据RRUD的操作
AslenG 2011-10-06
  • 打赏
  • 举报
回复
SearchB,谢谢你非常仔细的回答,你的意思是把业务方法放到数据访问层去实现……mark
Thomas.Sir 2011-10-06
  • 打赏
  • 举报
回复
Dao层只声明接口,不要去实现,实现放在Dao的实现层:
如:com.dao包下 有UserDao.java这个接口
public interface UserDao
{
public void save(User user);
public void delete(int userId);
public void update(User user);
public User getUser();
public List<User> getUsers();
}
在com.dao.impl包下,UserDaoImpl.java类
public class UserDaoImpl extends HibernateDaoSupport implements UserDao
{
//编写业务方法......
}


根据用户ID查询其下所有订单的方法,放到业务层即com.dao.impl下

com.dao = com.service
com.dao.impl = com.service.impl

UserDao = UserService
UserDaoImpl UserServiceImpl
(有时service也换成manager)
SSH架构包一般如下:
com.lgp.cms.action --放StrutsAction
com.lgp.cms.exception -- 处理系统异常
com.lgp.cms.form --放Actionform用作数据传输,和model差不多
com.lgp.cms.manager -- 抽象业务方法
com.lgp.cms.manager.impl -- 业务方法的实现
com.lgp.cms.model --实体类,即持久层数据存放
com.lgp.cms.util -- 工具类
beans.xml
hibernate.cfg.xml
log4j.properties
struts.xml

一般做项目的时候都会对com.lgp.cms.manager.impl里面的业务方法进行测试用Junit所以另件一个文件夹命名test下面建包com.lgp.cms.test

一般常规项目开发都是这样的,不要被什么层所蒙蔽,要弄清楚Struts和hibernate和spring各是干什么的就够了。。。。。



AslenG 2011-10-06
  • 打赏
  • 举报
回复
up+10...

81,092

社区成员

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

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