【发布时间】:2013-12-29 01:47:47
【问题描述】:
我使用 spring hibernate MVC 创建了 restful web 服务,它返回 JSON 作为响应。 我为此使用杰克逊库。我正在从 bean 类创建 json,并且正在使用休眠方法从 MySQL 服务器获取数据。
我的 bean 类中有近 20 个属性。问题是当记录较少时,比如 50-100,它的响应时间非常快,即在一秒钟内,但是当记录增加到 500 或更多时,从 bean 解析到 JSON 需要大量时间,即最多 25 -30 秒,但是,休眠 - MySQL 响应仍然非常快。
我已经在本地机器(i7 8 GB ram,window 7)上部署了这个 web 服务,在 tomcat 7 上。jackson 出了什么问题? 任何帮助将不胜感激。
【问题讨论】:
-
你能提供在 JSON 中转换对象的代码吗?
-
您的实体有任何关系吗?您是否尝试仅返回一个实体或一组?如果它是一个集合,你是如何将它转换为 json 对象的?从数据库读取时,您有任何条件/过滤器/标准吗?您是否在调试模式下运行服务以查看瓶颈位置?
-
500 个对象,每个对象有 20 个字段,这是一个大数组,容易导致速度下降。我建议使用 JProfiler 或 VisualVM 来分析执行情况并找出减速的确切位置。此外,请考虑浏览器或您用于查看 JSON 的工具可能解析速度慢和/或呈现大响应的可能性。
-
我同意@Marquez:一个包含 500 多个条目的数组,每个条目有 20 多个属性,将无论如何都需要时间来序列化,无论您使用什么序列化工具我的意见......分页呢?这是我能想到的唯一可扩展的解决方案。
-
嘿伙计,我现在遇到同样的问题,当 RestController 返回大约 50 条记录时,一切似乎都很好,但是当返回大约 500 条记录时,一切都变得如此缓慢。谁能知道发生了什么? JSON 序列化不应该那么慢。
标签: java spring hibernate rest jackson