0

我将 Thymeleaf 用于前端,将 Spring + Hibernate 用于后端。

建议将相同的实体 bean 用于前端,而不是创建 DTO。对于前端专有的属性,我们无论如何都可以使用@Transient,对吗?

我注意到在PetClinic Spring Demo 应用程序中他们重用了模型。

4

2 回答 2

1

实体是领域驱动设计 (DDD) 的一部分,其设计的重要方面是拥有 ID。这些旨在代表您的实体,这些实体是系统中的长期对象,即在数据库、存储等中。

值对象/数据传输对象实际上是用于临时计算和短期传输,例如在视图中使用。

我猜你会在你的项目中使用 MVC。在这方面使用服务层之后的实体将与前端紧密耦合实体。这反过来又不利于 MVC 的灵活性。最好不要这样做。

于 2020-01-15T06:02:38.257 回答
0

您可以使用域实体而不是创建其他视图对象或 DTO。主要是因为你说这不是一个大项目。

但是,不要仅仅为了您的前端需求而向您的域类添加属性。即使使用@Transient。这对我来说是代码气味。当您需要这样做时,请创建视图类或 DTO 而不是使用域对象。

于 2020-01-20T19:26:40.650 回答