我有两个表在我的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中预编译的,所以会更快。