Hibernate List与JDBC ResultSet

时间:2016-12-28 15:39:56

标签: java hibernate jdbc

Hibernate非常适合代码可读性数据库可移植性

但是我意识到Hibernate占用了大量内存。这是一个例子

HIBERNATE VERSION

 String hql = "FROM Employee";
    Query query = session.createQuery(hql);
    List results = query.list(); // this list is limited my the size of my RAM 

JDBC VERSION

ResultSet resSet = connection.executeQuery("SELECT * FROM Employee"); 
while (resSet.next()) { 
// This resSet is not limited to my RAM
} 

因此,如果我有一个返回数十万行的查询,我最好用JDBC处理它,因为那时我可以顺序处理每一行,而这并不占用我所有的RAM。

我说错了吗?或者Hibernate是否有任何类型的流媒体列表"类似于没有" flood"的ResultSet对象RAM?

2 个答案:

答案 0 :(得分:2)

您可以使用ScrollableResults逐行获取休眠结果。这里有一些例子answer

答案 1 :(得分:0)

阅读一下hibernate官方网站:

http://hibernate.org/orm/

回答你,没有可能的hibernate(可能使用本机查询https://www.mkyong.com/hibernate/hibernate-native-sql-queries-examples/)占用比JDBC更少的内存或时间进程,因为hibernate是JPA和JDBC的抽象,所以它是为了帮助开发人员更快地编程而构建的而且很容易但是处理它会花费更多的资源