将实体 bean 用于前端是否是一种好的做法



我正在使用Thymeleaf作为前端,Spring + Hibernate用于后端。

建议对前端使用相同的实体 bean 来代替创建 DTO。对于前端专用的属性,我们无论如何都可以使用@Transient,对吧?

我注意到在PetClinic SpringDemo应用程序中,他们重用了这些模型。

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

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

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

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

但是,不要仅仅为了前端需求而向域类添加属性。即使有@Transient。这对我来说是代码的味道。当您需要执行此操作时,请创建一个视图类或 DTO,而不是使用 Domain 对象。

最新更新