【发布时间】:2013-06-26 22:58:46
【问题描述】:
似乎我有一个返回 1000 行的查询,hibernate 正在 forever 从查询的返回值创建一个列表。似乎休眠状态每行进行一次“往返”,就我而言,这需要很长时间。这可以避免吗?在我的特定实例中,这是一个 Oracle 数据库。查询只是 100 个序列 ID 的列表,例如 https://stackoverflow.com/a/8292557/32453
【问题讨论】:
标签: hibernate
似乎我有一个返回 1000 行的查询,hibernate 正在 forever 从查询的返回值创建一个列表。似乎休眠状态每行进行一次“往返”,就我而言,这需要很长时间。这可以避免吗?在我的特定实例中,这是一个 Oracle 数据库。查询只是 100 个序列 ID 的列表,例如 https://stackoverflow.com/a/8292557/32453
【问题讨论】:
标签: hibernate
似乎休眠允许设置“获取大小”,从而避免这种情况下的往返时间。
ref:http://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/objectstate.html 搜索“fetchSize”
这是我最终在 hibernate.cfg.xml 文件中使用它的方式:
<property name="hibernate.jdbc.fetch_size">10000</property>
现在我的 1000 行查询的返回速度提高了大约 10 倍。好的。我猜默认是 1 的提取大小,每行都需要一个 RTT。
【讨论】: