我在MySQL之上使用Spring-Data-JPA构建了一个应用程序后端,我使用Jackson(JSON)和自定义服务向世界公开了这些存储库。
略微简化,数据模型由商家,交易和客户以及他们之间的关联组成。在数据库中,事务具有merchant_id和customer_id。
我不想为每条记录发送完整的商家副本,因此,对于读取,我使用了Jackson的观点概念来揭露该ID:
@JsonView(Views.Partner.class)
@Column(name = "merchant_id", insertable = false, updatable = false)
private Long merchantId;
@ManyToOne
@JoinColumn(name = "merchant_id")
@JsonIgnore
private Merchant merchant;
这不是非常优雅,我不知道如何复制它以进行插入或更新操作。一个选项显然是拥有单独的DTO,然后在我的应用程序中重新创建关系,但开销量首先会消耗使用JPA的好处。
我意识到HATEOAS,至少在理论上应该解决这个问题。但是,在我看来,这显着提高了实施客户的标准。在我的一些使用案例中似乎不可行。
那么其他人如何解决这个序列化/反序列化问题呢?