Hibernate findById或sql查询

时间:2013-10-26 08:21:19

标签: sql sql-server hibernate

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

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

2)或者每次繁琐时创建我的查询,但性能会更好

所以我想知道我应该使用什么?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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