当前位置: 首页 > 面试题库 >

同一张表上的2个JPA实体

夏英发
2023-03-14
问题内容

假设我有一个包含200列的表格,其中大多数从未使用过。

我将SmallEntity映射到经常使用的10列。我在与其他实体的关联中使用它。它加载速度快,消耗很少的内存,让我很高兴。

但是有时我需要显示200列。我想在200列上映射BigEntity类。它没有绑定到其他实体,也没有关联。

问题:您有这样做的经验吗?您是否知道Hibernate可能会遇到的任何麻烦,例如在一级缓存,脏检查和实体生命周期中总的来说?


问题答案:

最简单的方法是将不经常使用的属性映射为惰性:

<property name="extendedProperty" lazy="true" />

... or using Annotations ...

@Basic(fetch = FetchType.LAZY)
String getExtendedProperty() { ... }

Hibernate最初不会加载此类属性。相反,它们将按需加载(首次访问时)。您可以通过fetch all properties在HQL查询中使用子句来强制Hibernate加载所有属性。

另一种可能的情况是实际上将两个完全独立的实体映射到同一张表,但使其中一个不变。请记住,Hibernate
它们视为不同的实体,并且第一级/第二级缓存对于这两者是完全分开的(这就是不变性很重要的原因)。

你将 能够实现通过继承映射此功能,因为Hibernate 总是 会返回一个实际的具体的实体类型。看看我对HibernateInheritanceStrategy问题的回答以获取详细说明。



 类似资料:
  • 问题内容: 我有这个数据库存储传感器采集数据, 采集(acq)来自不同控制单元(cu)的固定间隔(日期时间) 每个采集在数据表中存储了许多不同的度量 我需要这种观点: 作为: v1是data.value(例如湿度),其中 acq.id_cu = 1 AND data.id_meas = 100 v2是data.value(例如计数器),其中 acq.id_cu = 2 AND data.id_me

  • 问题内容: 这是情况:- 我有一个名为“用户”的表。由于所需的大多数数据是相同的,因此它包含学生和导师的用户数据。 完成该系统后,现在我被告知客户希望能够将学生分配给导师。 是否可以通过链接表在一个表内创建一对多关系的合法/干净方法? 我已经尝试过考虑这一点,但是我想出的任何解决方案似乎都是混乱的。 我将不胜感激。 谢谢 菲尔 问题答案: 您是否尝试过以下方法? 例如,创建一个新表(如果需要,请选

  • 在我的属性模型中,我定义了这两个关系 在我的控制器中,我创建一个属性对象,并尝试获取已批准和挂起的图像。 变量是预期的。 然而,只是! 我尝试使用这个答案获取最后一个数据库查询,似乎挂起的查询甚至没有被执行。(最后一次查询运行已批准=1,这是针对关系。) 我怀疑这种关系可能是一个问题,但我被难住了。

  • 问题内容: 我有一个带有2个索引的PostgreSQL表。索引之一是涵盖和列,并且是唯一的B树索引。第二索引仅覆盖该列,并且是非唯一索引。 如果第一个索引存在,那么第二个索引是否冗余?换句话说,拥有第二个索引会没有好处吗? 问题答案: postgres多列索引只能用于搜索第一列,因此在实践中是多余的。 可以将多列B树索引用于涉及该索引列的任何子集的查询条件,但是当前导(最左边)列受到约束时,该索引

  • 问题内容: 我有两张表。我试图将下面的两个示例表与表1结合起来,两次引用表2。例如,如果我查看表1:第2组和成员7,则应在表2中查找ID,并提供以下输出: 表1 表2 有什么建议吗?谢谢 问题答案: SELECT Table_1.*, g.Name, m.Name FROM Table_1 INNER JOIN Table_2 AS g ON Table_1.Group=g.ID INNER JO

  • 如何在JPA中使用相同的表执行左外部联接?当我试着这样做的时候: 我得到错误:“意外标记:在第1行附近,第122列[从com.homersoft.wh.db.entity.radius.radacct e1中选择e1在e1.username=e2.username和e1.radacctID ?1]”