将实体 bean 用于前端是一种好习惯吗

Is it a good practice to use the entity beans for front end

我在前端使用 Thymeleaf,在后端使用 Spring + Hibernate。

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

我注意到在 PetClinic Spring 演示应用程序中他们重复使用了模型。

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

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

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

您可以使用域实体而不是创建额外的视图对象或 DTO。主要是你说工程不大

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