【发布时间】:2013-11-05 10:34:49
【问题描述】:
我有很多时间场景,我只想访问一个/两个/或一些列,我们正在使用休眠,所以我想知道哪个对性能更好
1)通过获取hibernate的findById方法,这对我来说非常方便,因为我必须调用它,但我认为它的性能不好,因为它会获取所有列而不是我只需要一些。
2) 或者每次都创建我的查询,这很乏味,但性能会更好
所以我想要关于我应该使用什么的建议?
【问题讨论】:
标签: sql sql-server hibernate
我有很多时间场景,我只想访问一个/两个/或一些列,我们正在使用休眠,所以我想知道哪个对性能更好
1)通过获取hibernate的findById方法,这对我来说非常方便,因为我必须调用它,但我认为它的性能不好,因为它会获取所有列而不是我只需要一些。
2) 或者每次都创建我的查询,这很乏味,但性能会更好
所以我想要关于我应该使用什么的建议?
【问题讨论】:
标签: sql sql-server hibernate
为了更具体地回答,如果您包含代码 sn-p 将会很有帮助。但总的来说,findById 是一种方便的方法,它会产生与您自己编写的查询非常相似的查询。因此,自己编写查询并仅返回您需要的列(构造函数表达式很有用)在性能方面会更好。我要问的问题是,提高性能是否值得更复杂的代码?您可以随时优化查询。
【讨论】:
这完全取决于正在加载的实体。如果实体是一个,有很多关系,并且您只需要根实体中的几个字段,那么绝对值得编写您自己的查询,因为 Hibernate 使用 JOINs 生成查询来加载实体,这可能非常昂贵的。这里要考虑的另一件事是,您始终可以使用 LAZY 或 EAGER 加载处理正在加载的字段,但这些设置是静态的,将永久应用于您的实体。
另一方面,如果实体没有很多关系,我认为最昂贵的部分是数据库和应用程序之间的对话时间,因此可以忽略加载一些额外的字段。
【讨论】: