我有一个类似于的 JPA 实体;
public class Inventory {
private String productname;
private String manufacturer;
private Float retailprice;
private Integer unitssold;
private String ourcomment;
}
在大约五分之二的查询中,我需要整个实体,但其余时间我都需要not有兴趣售出单位 and 我们的评论.
进行查询并获得很大的结果列表但只需要 3/5 的信息感觉像是一种浪费。我想稍微优化一下,并且我有预感这可以使用继承来完成。
But how?
遗产?不。
即使假设您有一个由列表中的前三个字段组成的实际域实体,并且Inventory
如果已经扩展了它,由于隐式多态性,您对该实体进行的任何查询都将不可避免地加载所有字段(如果映射到不同的表,则通过连接)。
你可以做的是将第四个和第五个属性映射为“lazy”;您的 JPA 提供商必须使用字节码工具才能做到这一点:
@Basic(fetch = FetchType.LAZY)
private Integer unitssold;
@Basic(fetch = FetchType.LAZY)
private String ourcomment;
你必须指定fetch all properties
在需要获取所有内容的查询中;其他人在第一次访问之前不会检索属性值。
老实说,只有当您的查询返回大型结果集并且“惰性”属性本身相当大时,这种方法才值得(例如,我不会这样做Integer
alone; String
如果可以很长的话可能是可行的)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)