有了hibernate是否还需要Dao?

最近学习使用Struts2+Hibernate,也是分层,web层里放Struts2的action
service层里放业务逻辑对象,持久层里放的是dao+po,对po操作基本放到了dao里,可以我不解的是使用Hibernate的方法我返回本身就是po,为什么大家写程序的时候还写dao呢?我的dao里对po的操作几乎把它细分到了一个方法仅仅一次crud,我通过调用不同的dao里多次方法来实现业务中需要对不同的po进行多次的crud操作的情况,每调用一次dao的一个方法开个session然后对po进行一次crud操作又关session,那么session的缓存不是基本没什么作用了吗?还有一个问题就是通常po对应了一dao又对应了一service,我的dao的方法分的比较细(一个方法仅仅对po进行一次crud),我感觉我的service里仅仅只是重复调用了一遍dao的方法,然后在action中调用service层里不同的service对象实现稍微复杂的业务,[b]我想过是不是service是用来把不同的dao的方法结合起来实现业务中需要对不同的po进行多次的crud操作的情况?这样在action中只要调用service中的方法那action里的代码就清爽了。[/b]但是我的action我也分的比较的细,一个action只针对用户的一步操作(多步操作可以用action chain串起来),一个页面可以有不同的action为用户不同的请求服务,action也是根据用户的一步操作命的名,我觉得根本不要把对action的多次操作的这样的业务放到service中,我想去掉service层直接在action中调用dao,原因是我的action是根据用户的一步业务操作命名,作为业务逻辑也好理解,几步操作可以用action chain,原因二是少了service层不用把数据又传到service层再调用一遍,原因三按照 黑体部分(见上面) 的考虑service到是有事情干了,可action干什么呢,难道是为了调service而存在的吗??关于web+service+dao+po这样的分层大家能能简单的说明下那三层究竟各负责什么,另外我知道要根据项目的具体情况合理分层,但我始终不明白service层的具体作用。
归纳下我的疑问:
1使用Hibernate的方法我返回本身就是po,为什么大家写程序的时候还写dao呢?我的dao里对po的操作几乎把它细分到了一个方法仅仅一次crud,每个方法一开session一关session,session的缓存不是几乎形同虚设了吗?
2我的web层的action我也分的比较的细,一个action只针对用户的一步操作(多步操作可以用action chain串起来),是否还需要service层?为什么?
3web(细,struts2支持按namespace对action划分)+service(使用Hibernate实现业务逻辑,稍复杂业务逻辑可以对不同po crud多次可以利用到session缓存)+po 一般情况的项目是不是这样分层更好一些呢?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值