0

我有很多时间场景,我只想访问一个/两个/或一些列,我们正在使用休眠,所以我想知道哪个对性能更好

1)通过获取hibernate的findById方法,这对我来说非常方便,因为我必须调用它,但我认为它的性能不好,因为它会获取所有列,而我只需要一些。

2)或者通过每次创建我的查询,这很乏味,但性能会更好

所以我想要关于我应该使用什么的建议?

4

2 回答 2

0

要更具体地回答,如果您包含代码片段会很有帮助。但总的来说,findById 是一种方便的方法,它会产生与您自己编写的查询非常相似的查询。因此,自己编写查询并仅返回您需要的列(构造函数表达式很有用)在性能方面会更好。我要问的问题是,提高性能是否值得更复杂的代码?您可以随时优化查询。

于 2013-10-26T08:48:23.653 回答
0

这完全取决于正在加载的实体。如果实体是一个,具有很多关系,并且您只需要根实体中的几个字段,那么绝对值得编写自己的查询,因为 Hibernate 生成带有JOINs 的查询来加载可能非常昂贵的实体。LAZY这里要考虑的另一件事是,您始终可以处理正在使用或正在加载的字段,EAGER但这些设置是静态的,将永久应用于您的实体。
另一方面,如果实体没有很多关系,我相信最昂贵的部分是数据库和您的应用程序之间的对话时间,因此可以忽略加载一些额外的字段。

于 2013-10-26T13:36:07.337 回答