创建数据库视图与创建 Hibernate 映射 - 性能 [关闭]

Posted

技术标签:

【中文标题】创建数据库视图与创建 Hibernate 映射 - 性能 [关闭]【英文标题】:Creating a Database View vs Creating a Hibernate Mapping - Performance [closed] 【发布时间】:2014-09-30 15:57:31 【问题描述】:

我们的数据库团队刚刚创建了一个数据库视图,它结合了两个表来提取记录。但是,这不会从其他表中提取所有其他必需的数据。此视图仅包含搜索中使用的字段。该视图没有在报告中显示所需的所有字段。

我的理解是,视图最适合用于组合所有必需的表格(但并非在所有情况下)和要发送到报告/演示文稿的必需字段。我们将把这个 View 映射到 Hibernate 并使用 Hibernate 来拉取数据。 DB 团队认为,您不需要所有列和表,并指示我使用 Hibernate 映射来完成所有这些工作。

我想知道那是什么观点。或者我可能没有做对?!该视图仅包含搜索的字段。

【问题讨论】:

【参考方案1】:

通常,这取决于很多事情。

考虑视图的最佳方式(在您描述的上下文中)是存储的可重用选择语句。它不必包含最终结果所需的所有列,您仍然可以将它们与视图连接起来,就像视图是一个表一样。这就是您的数据库团队所建议的。

如果缺少的列是用于构建视图的表的一部分,您可能会受到性能影响,因为您将加入表两次,而不是一次。这可能是个坏主意。

如有疑问,请进行实验:

如果您使用视图,请按其外观编写语句。

然后编写您将用来创建您似乎喜欢的视图的语句。

确保两者产生完全相同的结果。

测量两个语句所需的时间。确保您衡量获得所有结果所需的时间,而不仅仅是前 20 个或其他结果,因为通常对于较大的结果,快速提供第一行的访问路径需要更长的时间才能获得所有结果。

【讨论】:

在 View 中加入表格与在 Hibernate 中加入表格怎么样? @KevinRave 我不明白你的问题。 对不起。我想知道,性能方面,在 Hibernate (POJO) 中映射所有必需的表与在 View (SQL) 中加入它们。哪个更好? 正如我在第三段中所写的:如果这导致您加入一个表两次,而不是一次,那么您的性能就会受到影响。如果没有,那也没关系。如有疑问,请进行实验。

以上是关于创建数据库视图与创建 Hibernate 映射 - 性能 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

mybatis可以像hibernate一样自动创建表吗

Hibernate连接mysql数据库并自动创建表

使用maven和myeclipse配置hibernate以及基本的入门程序

生成 hibernate 映射文件和实体类

使用复杂的 sqlquery 时如何使用 Hibernate 创建组合对象的映射?

Hibernate入门