没有硬性规定可以将JPA实体用作DTO(数据传输对象),但这不是一个好习惯(出于很好的理由和观点)。
除了DTO在规模上是实体的轻量级版本之外,还有其他优点。
我意识到的这样的优势之一就是关系的版本更浅,例如对于一对多单向关系,您的子实体也将引用您的父实体,但是您可以在DTO中断开该链,因此避免了很多JSON转换和无限循环相关问题。
我发现在DTO级别比从实体级别更容易进行JSON到Object的转换(反之亦然),因为实体表示数据库图而不是客户端业务图。
一个简单的通用实用程序类进行转换(从DTO到Entity,反之亦然)就足够了。您可以按照此处所述使用模型映射器API 。
我不让实体跨越服务层边界,它的所有DTO都在控制器上,而我不在控制器上进行转换。
附加的样板代码是DTO方法的一个缺点。



