我应该在哪里创建新实体 - 在表示层?

时间:2011-06-17 14:20:40

标签: java presentation-layer

因为我正在学习Java的所有成果以及我想要找到的一件事,我想知道有一件事情在我的脑海里流传了一段时间。 下面的代码是两个不同类中两个方法的快速示例。第一个显然是某个页面的控制器,另一个是服务的一部分。

@RequestMapping("/something)
public void doSomething() {
    ...

    SomeEntity example = new SomeEntity();
    example.setAccount(account);
    example.setSmthElse(else);
    example.setDate(new Date());
    example.setSomething(something);

    someService.saveSomeEntity(example);
}

... 

public void saveSomeEntity(SomeEntity object) {
    someEntityDAO.save(object);
}

所以我的问题是,新实体SomeEntity的创建和它的属性设置应该如上所述在表示层部分完成,还是应该通过传递在saveSomeEntity方法中以某种方式完成它的所有参数?

2 个答案:

答案 0 :(得分:3)

控制器不是表示层。它是MVC中的C.持久层应仅关注持久性,而不是模型对象创建。上面的代码没问题。有些人会在服务中创建对象,而不是在控制器中创建对象,但是控制器中的params很容易获得,所以IMHO可以接受。

答案 1 :(得分:2)

是的,可以在任何一层创建实体。

有些人更喜欢DTO(具有相同结构的单独对象),然后将其转换为实体。

避免在jsps中编写java代码。实例化控制器中的对象,或将其留给某种绑定机制。