如何在同一数据库表上映射两个 JPA 或休眠实体
在我们的项目中,我们有一个实体“餐厅”,其中包含近30个字段(有些与其他实体有关系)。因此,每次我们需要一个“Restaurant”对象时,即使对于几个字段,所有其他字段也会被检索。这会影响性能。因此,在 HBM 文件中,我们编写了两个类,它们都指向相同的物理类和相同的数据库表,如下所示。
=== restaurant.hbm.xml ===
<!-- Light Weight Version -->
<class name="com.raj.model.Restaurant" table="RESTAURANTS" entity-name="RestaurantLite"
dynamic-update="false" dynamic-insert="false">
<cache usage="read-only"/>
<!-- few basic properties and relationships -->
</class>
<!-- Restaurant -->
<class name="com.raj.model.Restaurant" table="RESTAURANTS" entity-name="Restaurant">
<!-- all properties and relationships -->
</class>
在其中一个DAO实现中,我们使用的是标准,它采用“RestaurantLite”并返回餐厅列表,如下所示。
Criteria criteria = session.createCriteria("RestaurantLite");
// criteria related stuff
return new LinkedHashSet<Restaurant>(criteria.list());
现在我们要删除所有 hbm 文件并使用注释。那么,如何使用entites的注释来完成相同的操作呢?我们是否需要创建一个额外的类“RestaurantLite”?如果这样,上述条件如何返回“餐厅”对象?