2

我的数据库中有两个表,T1 和 T2。T1 的一列是引用 T2 的外键。我只需要 T1 和 T2 的一部分列进行处理,因此我创建了一个仅包含必要列的 DTO T1T2。为了使用 Hibernate 将 DTO 映射到这两个表,我使用了类元素的 subselect 属性。

<hibernate-mapping>
<class
    name="com.xconnect.cdrrecorder.processing.dto.IngressNumRuleVoipProfile"
    table="numbermodificationrules"
    subselect="select ... from T1 left join T2 on id1=id2 where ...">

    <cache usage="read-only"/>

...

</class>
</hibernate-mapping>

我注意到当我需要选择一个对象时,Hibernate 将请求转换为两个选择(一个到另一个)。

有一个更好的方法吗?你对表演有什么看法?

谢谢

4

1 回答 1

4

如果您正在创建 DTO,最好从查询中填充 DTO,如此处的示例所示。仅在有后备表时才创建实体。

如果经常使用 DTO,您可以在数据库中编写一个视图并创建一个简单的 DTO 实体来引用它。由于视图是在数据库中预编译的,它会更快。

于 2011-10-23T10:57:32.987 回答