我正在寻找可以让我在数据库级别复制类似 Jackson 的 @JsonView 功能的东西。我经常觉得我在尝试在查询性能和从 API 返回所有必要数据之间取得平衡时遇到了困难。
例如,我有一个类结构,如:
class Employee {
String name;
@ManyToOne(fetchType = EAGER)
Company company;
// A lot of other data
}
class Company {
String name;
// A lot of other data
}
现在我想显示一个员工列表,并在表中另外显示每个员工的公司名称。理想情况下,在原始 SQL 世界中,我会做类似的事情
select e.name, c.name from Employees as e left join Companies as c on e.companyId = c.id
但是相反,hibernate 会查询整个公司的数据以及其他关系及其关系,这通常会使其变得非常缓慢。延迟加载也较慢,并且在您需要从控制器返回查询数据时不起作用。
也许有一些东西可以让我以如下方式声明数据视图:
class EmployeeListView {
String name = Path.to("Employee.name");
String companyName = Path.to("Employee.company.name")
}
?
@NamedEntityGraph
是答案,对于任何相关的人
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句