Dao层设计

在MVC架构中,Service层负责业务逻辑实现,Dao层负责和数据库交互。那么Dao层就有两种设计角度,以业务驱动和以数据驱动。以业务驱动,即每种业务都有对应的数据查询,Dao的接口也依据业务需求来定。比如按条件查询数据,若service中收到的根据业务制定的查询类为A,那么Dao中就应有根据A来查询的接口。这样设计,如果A和Dao中直接能用的查询类一致还好说。如果不一致,则Dao还需将A转换成它能直接用的查询类(如hibernate的Restriction或sql语句),再与数据库交互。这会导致Dao变得复杂庞大,因为它担负着两种功能。而且这样设计Dao与业务耦合度过高。若以数据驱动,则Dao可制定查询接口供Service使用。所有业务实现均和Dao的查询接口对接,可增加Dao的重复使用率,也可降低Dao层的复杂度。而Dao也应提供基础通用的方法。让Dao来提供查询接口也更符合单一权责原则。显然,以业务驱动,Dao难以避免地至少要承担两种责任(转换查询类和与数据库交互)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值