使用带有弹簧靴的杰克逊时如何防止休眠延迟加载?



我正在使用Spring Boot,Jackson和Hibernate作为带有REST(或多或少的REST..(API的基本后端。

现在的问题是,我想使用实体,而不想使用 dto 来保持低复杂性。

问题是,当我检索一个带有集合的实体时,杰克逊会获取东西,是的,里面有一个圆圈。

我希望能够使用弹簧数据、杰克逊和实体类,但手动控制关联。

我不想用JsonIgnore 或其他注释来配置它。

咔嚓!

有几种方法可以做到这一点

  1. 使用@JsonIgnore
  2. 使用@JsonManagedReference(类似这样(并@JsonBackReference
  3. 我的最爱 - 使用@JsonView

为什么?

  1. 将从序列化/反序列化中排除不需要的属性
  2. 显式地解决循环依赖序列化/反序列化
  3. 使有效负载尽可能小 - 这允许你选择应为给定终结点序列化的属性。

哪一个最适合您?

好吧,这取决于你,但从描述来看,看起来 2 是要走的路(可能与 3 相结合( 祝你好运!

DTO是更复杂的场景,尤其是在入站端。对于简单用例的动态过滤,我为 jackson 编写了一个插件来使用antpath样式过滤。可能它可以帮助您:

https://github.com/Antibrumm/jackson-antpathfilter

最新更新