JpaMetamodelMappingContext的目的是什么?

时间:2018-01-18 15:04:22

标签: java spring-data-jpa

spring-data-jpa创建JpaMetamodelMappingContext的实例,在使用@EnableJpaRepositories时维护JPA实体的元模型。

我们希望将CrudRepository功能(findOnedelete ...)与org.springframework.data.jpa.domain.Specifications<T>结合使用。 <{1}}或不需要来自方法名称的动态生成的查询。

在这种情况下我们需要@Query吗?

(原因:就堆空间而言,上下文相当庞大。如果我们的用例不需要它,我们会尝试跳过它的创建。)

非常感谢!

1 个答案:

答案 0 :(得分:0)

仅供参考,在实时环境中运行后:可以在没有JPA元模型的情况下运行spring-data的CrudRepositoryJpaRepository。我们的Configuration如下:

@Configuration
@EnableJpaRepositories(basePackageClasses = Foo.class)
@ComponentScan(basePackageClasses = { Bar.class })
public class DomainConfiguration {

    /**
     * The returned factory will built a {@link JpaMetamodelMappingContext} without a JPA MetaModel.
     *
     * This could save a couple of hundres MBs of heap space, but may disable some of spring-data's features.
     * 
     * @return factory bean for {@link JpaMetamodelMappingContext}.
     */
    @Bean(name = BeanDefinitionNames.JPA_MAPPING_CONTEXT_BEAN_NAME)
    public JpaMetamodelMappingContextFactoryBean jpaMetamodelMappingContextFactoryBean() {
        JpaMetamodelMappingContextFactoryBean factory = new JpaMetamodelMappingContextFactoryBean();
        return factory;
    }
}