【发布时间】:2015-07-27 06:01:33
【问题描述】:
我正在使用 JPA/Hibernate 作为 ORM,现在想要优化我的查询以仅加载特定端点的必要数据。仅加载特定类的属性子集然后将其转换为 JSON 的最佳方法是什么?对于端点,我使用 Spring MVC 和 Jackson JSON Mapper。
我想出的方法,我还没有测试过。
-
创建只包含必要属性的 POJO 对象和 使用属性映射查询字段
@SqlResultSetMapping.这种方法需要添加很多额外的类,但其他 看起来还不错。
-
忽略数据库查询中的开销并限制我的 使用 JSONViews 响应数据。
这很快就会变得一团糟,把不同的东西放在一起 JSONViews 看起来很乏味。对于大多数查询,开销肯定是 微不足道,但我很好奇如何映射更大更复杂 查询。
使用 Java.sql.PreparedStatements 并手动映射 ResultSet。 另外使用 @JsonInclude(Include.NON_NULL) 只使用非空 价值观。现在这对我来说似乎是最好的解决方案,但它忽略了 完全 JPA,我不确定这是否应该是我的解决方案。 我知道我失去了 ORM 的所有优势,但似乎每个 其他解决方案需要类似或更复杂的工作。
- ???
在过去的几个月里,我主要使用 JavaScript/Node 进行开发,我喜欢我可以准确地生成响应所需的对象。有没有推荐的方法来做这些事情,对我来说这似乎是一个常见的用例。
谢谢
【问题讨论】:
-
正如 Hibernate 文档所指出的,优化列的内容很少值得:(docs.jboss.org/hibernate/orm/3.3/reference/en/html/… section19.1.7)。因此,您还可以使用此处概述的方法来加载它们并自定义视图,例如:stackoverflow.com/a/28940610/1356423
标签: java spring spring-mvc jpa jackson