我有一个包含多个DTO的项目,可以在几个松散耦合的组件之间进行交换。
所有人都有这样的名字和身份证明:
public class BaseDto {
private String id;
private String name
}
基于此,还有其他几个DTO,它们的检索或任何东西都不应该有任何注释。所以这里没有jpa注释。
在我的jpa组件中,我想扩展Dtos并给它们注释如下:
public class SomethingJpa extends SomethingDto {
@Column(name = "someProperty")
public String getSomeProperty() {...}
}
这是一个干净的数据库访问层和不依赖于JPA的组件不必将完整堆栈作为依赖,但我仍然可以将所有DTO共享给所有组件(以不同的方式传递对象有时JSON )。由于JPA组件仅将基类版本传递给所有其他组件。
这有效,但我只能从一个类继承。对于JPA Context,我希望有一个@MappedSuperclass注释,所以我不必在每个JPA对象中包含id和name。
将注释放在DTO中意味着,我需要为3种不同的用例方法添加注释,使其难以维护。也可能只是立即维护所有DTO并始终在同时更新它们,这是乏味的。 (JSON仅在特殊情况下需要注释,以便更新的DTO意味着更新的JSON)
PS:以任意方式查看JSON作为示例。