使用Spring Data设置提取大小

时间:2013-11-29 11:17:48

标签: spring-data spring-data-jpa

对于大型结果集,增加提取大小很重要。关于如何设置Spring JdbcTemplate的获取大小的讨论很多。但是,我们通常使用Spring Data进行数据库访问。我如何设置Spring Data查询的获取大小,假设我们使用JPA和Hibernate作为提供者?

1 个答案:

答案 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();

链接

  1. Hibernate documentation
  2. Spring Data JPA reference | javadoc
  3. JPA 2查询提示javadoc
  4. List of query hints for Hibernate