我有一个使用jdbc进行数据库调用的Web应用程序。 我有一个服务,dto和dao层。 我有一个巨大的请求xml。我可以将请求对象传递给dao方法,还是应该将请求传递给dto模型,然后将dto对象作为参数传递给我的dao方法? 哪种方法正确?
public TestServiceClass addSurveySubmitDetails(TestRequestXML testRequestXML){
//call to dao method
TestDao = testdao = new TestDao(testRequestXML);
}
OR
public TestServiceClass addSurveySubmitDetails(TestRequestXML testRequestXML){
//create dto object
TestDTO testDTO = new TestDTO();
testDTO .setId(testRequestXML);
//call to dao method
TestDao = testdao = new TestDao(testDTO );
}
哪种方法正确?
答案 0 :(得分:2)
这取决于您的体系结构,但由于 DTO 为Data Transfer Object
,因此没有理由在服务和dao层之间使用它们。
您可以在服务层中使用一个,我想在下面的代码示例中,但无论如何,这取决于您的应用程序的架构。
public TestServiceClass addSurveySubmitDetails(TestDTO testDTO){
TestRequestXML testRequestXML = testDTO.getId();
TestDao = testdao = new TestDao(testRequestXML);
}
有关DTO的更多信息
答案 1 :(得分:2)
我认为没有正确或错误的答案。在我看来,这是非常主观的。
但我个人希望在控制器和服务之间有一个薄层(假设您正在使用MVC模式),它的唯一任务是将请求(XML,Json等)转换为域对象。
当您拥有需要在视图中显示信息的复杂域对象或聚合时,它非常有用。
答案 2 :(得分:0)
YAGNI是个好主意,尽可能保持简单的设计
答案 3 :(得分:0)
DTO真正用于远程呼叫。如果要通过网络将数据发送到其他虚拟机,请使用DTO。如果您要将数据发送到同一虚拟机上的另一个本地类,请不要使用DTO。 DTO只是远程传输数据的有效方式。它在任何其他地方都没有任何优势。