Hibernate 列表与 JDBC ResultSet

Posted

技术标签:

【中文标题】Hibernate 列表与 JDBC ResultSet【英文标题】:Hibernate List vs. JDBC ResultSet 【发布时间】:2017-05-12 22:11:31 【问题描述】:

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

但是我意识到 Hibernate 需要大量内存。这是一个例子

休眠版本

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

JDBC 版本

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

因此,如果我有一个返回数十万行的查询,我应该更好地使用 JDBC 来处理它,因为这样我就可以按顺序处理每一行,而这不会占用我所有的 RAM。

我说的对吗?或者 Hibernate 是否有任何类似于 ResultSet 对象的“流列表”,不会“淹没”RAM?

【问题讨论】:

【参考方案1】:

您可以使用ScrollableResults 逐行获取休眠的结果。这个answer中有例子。

【讨论】:

【参考方案2】:

阅读一点hibernate官网:

http://hibernate.org/orm/

回答你,hibernate 不可能(可能使用原生查询https://www.mkyong.com/hibernate/hibernate-native-sql-queries-examples/)比 JDBC 占用更少的内存或时间进程,因为 hibernate 是 JPA 和 JDBC 的抽象,所以它旨在帮助开发人员更快更轻松地编程但是处理它会花费更多的资源

【讨论】:

以上是关于Hibernate 列表与 JDBC ResultSet的主要内容,如果未能解决你的问题,请参考以下文章

jdbc与hibernate的优缺点比较

ORM 解决方案(JPA;Hibernate)与 JDBC

JDBC vs Hibernate(转)

关系处理:Hibernate 与 JDBC

JDBC与Hibernate的区别

jdbc ,jdbcTemplate,MyBatis,Hibernate比较与分析