gpt4 book ai didi

hibernate - 如何在序列化过程中限制hibernate相关对象

转载 作者:行者123 更新时间:2023-12-02 10:21:32 26 4
gpt4 key购买 nike

我的问题不是如何摆脱周期性依赖,我知道怎么做。

在我们的示例中,我将使用单向连接。

假设我们有很多相关对象:

@Entity
public class EntityOne {

@OneToMany
private Set<EntityTwo> entityTwoCollection;

}

@Entity
public class EntityTwo {

@OneToMany
private Set<EntityThree> entityThreeCollection;

}

@Entity
public class EntityThree {

@OneToMany
private Set<EntityFour> EntityFourCollection;

}

...
// 4, 5 ... 20

如果我们什么都不做并尝试序列化 Controller 中的第一个对象(EntityOne),只要它有连接,我们将获得所有二十个序列化对象,这是没有必要的,而且非常昂贵。

对于我的情况,我需要第一个对象 (EntityOne) 仅获取与第三个对象相关的对象。对于第二个对象 (EntityTwo),根本不显示相关对象,仅显示您的字段。

问题是,我应该使用什么技术才能将 API 中的对象显示到一定深度。为了不向数据库查询我不需要显示的对象。

最佳答案

这是一个完美的例子,说明了为什么我们不应该直接通过 API 公开我们的实体,而应该使用某种形式的 DTO。这允许内部表示与外部表示清晰分离。对于那些使用 Spring REST 的人来说,dto 是 Resource 的扩展。在我的许多项目中,我使用 Dozer 在实体和 dto 之间进行映射。 Dozer 进行通配符映射,这意味着任何具有相同名称且具有兼容类型的字段都会自动映射(无需写入映射)。任何不在 DTO 中的字段都不会被映射。

关于hibernate - 如何在序列化过程中限制hibernate相关对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54313980/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com