只读多表DTO + Hibernate



我有两个表在我的DB, T1和T2。T1的一列是引用T2的外键。我的处理只需要T1和T2的一部分列,因此我创建了一个只包含必要列的DTO T1T2。为了使用Hibernate将DTO映射到这两个表,我使用了class元素的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将请求转换为两个选择(一个转换为另一个)。

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

谢谢

如果要创建DTO,最好像下面的示例那样从查询中填充DTO。只有在有备份表的情况下才创建实体。

如果经常使用DTO,你可以在DB中编写一个视图,并创建一个简单的DTO实体来引用它。因为view是在DB中预编译的,所以会更快。

相关内容

  • 没有找到相关文章