我正在使用JPA / Hibernate作为ORM,现在希望优化我的查询以仅加载特定端点的必要数据。仅加载特定类的属性子集然后将其转换为JSON的最佳方法是什么?对于端点,我使用Spring MVC和Jackson JSON Mapper。
我想出的方法,我还没有测试过。
创建仅包含必要属性的POJO对象
使用属性映射Query字段
@SqlResultSetMapping
。
这种方法需要添加许多其他类,但其他类 而且看起来不错。
忽略数据库查询中的开销并限制我的 使用JSONViews响应数据。
这可能很快就会变得混乱,把不同的东西放在一起 JSONViews似乎很乏味。对于大多数查询,开销肯定是 微不足道,但我很好奇如何绘制更大更复杂的地图 查询。
使用Java.sql.PreparedStatements并手动映射ResultSet。 另外,使用@JsonInclude(Include.NON_NULL)仅使用非null 值。现在这对我来说似乎是最好的解决方案,但它忽略了 完全是JPA,我不确定这应该是我的解决方案。 我知道我失去了ORM的所有优点,但似乎每一个 其他解决方案需要类似或更复杂的工作。
过去几个月我主要在JavaScript / Node中开发,我喜欢我可以准确生成响应所需的对象。有没有推荐的做这种事情的方式,对我来说这似乎是一个常见的用例。
感谢
答案 0 :(得分:1)
我们之前总是使用POJO对象来满足这些需求,但有时它更适合使用'select new'构造而不是结果映射。
select new com.example.MyClass(id, ...) From MyObject
也许你可以考虑一下。