gpt4 book ai didi

performance - Jackson 2 : Parsing a ton of classes through JPA associations, 可以限制深度吗?

转载 作者:行者123 更新时间:2023-12-04 04:46:12 25 4
gpt4 key购买 nike

我一直在尝试在使用 Jackson 2.2.2 作为 Json (de)serializer 的 Spring MVC 3.1.2 应用程序之上开发一个 RESTful 层。问题是,它对引用的影响太深了,对于一个过去最多需要 1 秒才能加载的页面现在只需要 22 秒的服务器端。

问题是 jackson 正在经历每一个关联,并且需要永远加载和解析它。

我知道@JsonIgnore但是好吧,我宁愿有一个深度限制,因为如果我们说:

My amazing explanation

如果我把 @JsonIgnore在 B 和 C 之间的链接上,那么我在序列化 A 时会很好,但是如果我需要序列化 ​​B 并希望 C 一起序列化怎么办?我能想到的最好方法是给序列化器一个深度级别的限制。假设深度限制= 1,那么在序列化A时它不会序列化C,但在序列化B时仍然会序列化它。有没有办法做这样的事情?

我看过 @JsonView注释,但它旨在包含属性而不是排除它们。它可用于排除某些属性,但仅在一类级别上相关。

我需要编写自己的序列化程序吗?如果我编写自己的序列化程序,有没有办法实现这样的事情?

我认为这无法解决,但我找不到任何可以帮助我解决问题的东西...

谢谢!

最佳答案

如果您使用 Hibernate ,Jackson Hibernate 模块 (https://github.com/FasterXML/jackson-datatype-hibernate) 支持禁用加载“延迟”属性(延迟获取的集合)。这将允许您限制要访问和序列化的对象图的大部分。

除此之外, jackson 没有基于深度的限制;核心包对特定的域/数据模块一无所知。可以编写扩展模块来改变特定域的行为;这就是 Hibernate 模块的工作原理。也许这可用于通用 JPA 特定的功能。

关于performance - Jackson 2 : Parsing a ton of classes through JPA associations, 可以限制深度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18143195/

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