看起来我有一个返回1000行的查询,hibernate正在 forever 从查询的返回值创建一个列表。似乎hibernate每行进行一次“往返”,在我看来,这需要很长时间。这可以避免吗?在我的特定实例中,这是一个oracle db。该查询只是一个包含100个序列ID的列表,如https://stackoverflow.com/a/8292557/32453
答案 0 :(得分:0)
似乎hibernate允许设置“获取大小”,这样可以避免在这种情况下的往返时间。
参考: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。