当我需要一个大表中的一行时使用Hibernate或JDBC

问题描述:

1>具有百万行和100列的表我想运行一个查询,它将从表中返回一行(并且我需要3-4列)。对于这种用例来说,哪种JDBC或Hibernate是更好的选择。当我需要一个大表中的一行时使用Hibernate或JDBC

2>如果我们在这种情况下使用hibernate,也有任何内存不足的风险。我对休眠中的缓存问题没有任何想法,并听说有人获得OOM。

3>哪个hibernate/JDBC会给出更快的结果。由于时间对我来说很重要。

  1. 你可以很容易地用Hibernate做到这一点,只需使用“视图对象”即可。性能将与原生JDBC相同。
  2. 不,Hibernate只会处理结果集中返回的内容。如果只包含一行,则不会有任何问题。在下面两种情况下,Hibernate会很慢:它会生成次优查询(您可以使用.hbm配置文件和/或注释调整它),或者处理结果很慢(当返回的Resultset很大时会发生这种情况)。

顺便说一句,请参阅我的博客条目使用Hibernate for OLAP style queries

如果这是一个已经在使用hibernate的项目,那么没有理由不使用hibernate。请参阅Istvan Devai的回答。

如果这是一个新的项目,并且这是你使用db所做的所有工作,我认为使用hibernate(或任何其他JPA实现)没有多大好处,并且更好地使用普通JDBC。