DAO设计模式和Servlet

我正在阅读Oracle网站上的DAO设计模式,我试图在使用JSP,Servlet,普通java对象和MVC模式的上下文中理解下面的图像。 在我的例子中,BusinessObject是我的servlet,TransferObject是我的java类,只有属性,mutators和访问器(DTO)?

例如,如果我在servlet(控制器)中有这个代码

DTO.setFirstName(request.getParameter("firstName")); DTO.setLastName(request.getParameter("lastName")); DAO.save(DTO); 

http://sofzh.miximages.com/java/index.html

几乎。 在处理表示逻辑的控制器和处理数据访问逻辑的DAO之间,应该有一个包含业务对象的业务层。

这些业务对象的主要职责是

  • 为控制器提供业务服务。 他们是一个门面
  • 封装应用程序的业务逻辑
  • 划定交易
  • 使用一个或多个DAO来获取,查找和持久化对象。

此层非常重要,因为您希望能够在单个事务中对数据库执行多个操作。 并且Web控制器不应该负责处理这个问题。 此外,除了Web控制器(Swing客户端,批处理等)之外,其他客户端可以使用相同的业务服务。

业务对象通常使用会话EJB或Spring服务实现。

他们也很有用

  • 单元通过模拟业务对象来测试控制器
  • 通过模拟DAO对unit testing业务逻辑

是的,BusinessObject看起来像MVC的C(控制器)。

整个DAO模式是MVC中Model层的一部分,其中BussinessObject提供Model接口,DAO和DTO对象是模式实现的一部分。

您的servlet将在(在)Controller层中,并且用于呈现要发送到客户端的HTML(或其他格式)的类将在(在)View层中。

Web应用程序的大小和复杂性决定了是否可以仅使用一个类来构建层。

在回答你的问题时,DTO(我们称之为数据持有者对象)只包含属性,getter / setter,清理和validation方法。 它们用作存储/传输和业务逻辑实现之间的关注点分离。