只读多表 DTO +休眠

发布于 2024-12-11 05:08:34 字数 579 浏览 0 评论 0原文

我的数据库中有两个表,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 会将请求转换为两个选择(一个选择另一个)。

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

谢谢

I have two tables in my DB, T1 and T2. One column of T1 is a foreign key that references T2. I need only a part of the columns of T1 and T2 for my processing, thus I've created a DTO T1T2 that contains only the necessary columns. To map the DTO to these two tables with Hibernate, I used subselect attribute of the class element.

<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>

I noticed that when i need to select for an object, Hibernate converts the request to two selects (one into the other).

Is there a better way to do this? What do you think about performances?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

写下不归期 2024-12-18 05:08:34

如果您要创建 DTO,最好从查询中填充 DTO,如示例 此处。仅当有支持表时才创建实体。

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

If you are creating a DTO, better to fill the DTO from the query as in an example here. Only create the entity if there are backing tables.

If the DTO is used very often you can write a view in the DB and create a simple DTO entity to refer that. Since view is pre-compiled in the DB, it will be faster.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文