2013-05-31 142 views
7

我需要了解应该在域,DAO和服务层对象内的方法类型(在业务逻辑方面)之间的区别。例如,如果我正在构建一个小型Web应用程序来创建,编辑和删除客户数据,据我所知在域层对象内部我应该添加Get/Set Customers对象属性的方法,例如(getName, getDOB,setAddress,setPhone等)。域,DAO和服务层

现在我正在学习的是我应该在DAO和服务图层对象中放置哪些方法。

在此先感谢您的时间和精力。

回答

8

说到一般(未休眠或春季专用):

DAO层包含查询和更新您的域层保存到数据存储区(通常是一个关系数据库,但不必须的)。使用接口将您的DAO从实际的数据存储中抽象出来。它并不经常发生,但有时您想更改数据存储区(或使用mock来测试您的逻辑),并且界面使其更容易。这将有像“保存”,“getById”等方法。

服务层通常包含您的业务逻辑和编排域层和DAO之间的交互。它会有任何方法对您的特定域有意义,比如“verifyBalance”或“calculateTotalMileage”。

+0

您可以请我提供DAO层下方法的例子吗?据我所知在服务层对象下应该有像verifyBalance,calculateTotalMileage这样的方法,据我所见,所有计算方法 – MChan

+0

@MChan - DAO主要关心更新,创建,删除和检索数据数据库。在非对象数据存储的情况下,它也会执行从持久数据(RDB中的行和列)到对象以及从对象到持久数据的映射。方法nanmes可以是任何你想要的,但通常是像“保存”,“删除”,“查询”,“更新”。服务层不必具有计算方法。这些方法将是您的业务需要确定或做的任何事情。 – lreeder

6

DAO:用于“包装”JPA或JDBC或SQL或noSQL调用或任何访问数据库系统的“包装器”方法。

域:与单一类型的实体(域对象)相关的业务逻辑调用。

服务:业务逻辑调用与一组类型的实体或一组相同类型的几个实体相关联。

(我不知道英文,对不起......)

这意味着: 服务层比领域层“做大”,往往是靠近前端,往往就需要或使用多个域对象。

域对象封装大部分东西域的一部分(这就是为什么它们被称为D.O.)

DAO只是某事的技术,有时需要,有时没有。 当使用真正的域对象时,通常使用“存储库”来隐藏对数据库系统的访问,或者添加特殊的数据库功能或其他。

前端 - >服务方法1 - > d.o. X型,d.o. B,类型X,列表

+0

如果我使用Hibernate,那么DAO对象方法有什么用?我的意思是他们如何帮助我进行数据访问? – MChan