Java 只读多表DTO+Hibernate
我的数据库中有两个表,T1和T2。T1的一列是引用T2的外键。我只需要T1和T2列的一部分进行处理,因此我创建了一个DTO T1T2,它只包含必要的列。为了使用Hibernate将DTO映射到这两个表,我使用了class元素的subselect属性Java 只读多表DTO+Hibernate,java,hibernate,dto,subquery,multi-table,Java,Hibernate,Dto,Subquery,Multi Table,我的数据库中有两个表,T1和T2。T1的一列是引用T2的外键。我只需要T1和T2列的一部分进行处理,因此我创建了一个DTO T1T2,它只包含必要的列。为了使用Hibernate将DTO映射到这两个表,我使用了class元素的subselect属性 <hibernate-mapping> <class name="com.xconnect.cdrrecorder.processing.dto.IngressNumRuleVoipProfile" table="n
<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实体来引用它。由于视图是在数据库中预编译的,因此速度会更快。谢谢您的回答。在第5.1.1节中,说明了subselect的使用。我的问题是,在哪些情况下,我们需要使用subselect而不是其他查询方式?如链接中所述,有时您希望使用视图,但无法在数据库中创建视图,即使用旧模式。在这种情况下,可以将不可变的只读实体映射到给定的SQL subselect表达式。如果可以的话,跟着风景走。