对于大型结果集,增加提取大小很重要。关于如何设置Spring JdbcTemplate
的获取大小的讨论很多。但是,我们通常使用Spring Data进行数据库访问。我如何设置Spring Data查询的获取大小,假设我们使用JPA和Hibernate作为提供者?
答案 0 :(得分:9)
这取决于您想要设置的内容。如果您想要全局,只需将其作为属性添加到persistence.xml(或EntityManagerFactory
的配置方式)。对于hibernate,这意味着添加hibernate.jdbc.fetch_size
属性。
<property name="hibernate.jdbc.fetch_size" value="50" />
如果要为某些查询指定它,请在Query对象上使用JPA中的查询提示。
TypedQuery<Foo> q = em.createTypedQuery("some hql here", Foo.class);
q.setHint("org.hibernate.fetchSize", "100");
或者在使用Spring Data JPA时,在接口方法上使用@QueryHints
注释。可以应用于包含和不包含@Query
的两种方法。
@QueryHints(@javax.persistence.QueryHint(name="org.hibernate.fetchSize", value="50"))
List<Foo> findAll();
链接