@EnableJpaRepositories注解用于Srping JPA的代码配置,用于取代xml形式的配置文件,@EnableJpaRepositories支持的配置形式丰富多用,本篇文章详细讲解。

1、简单配置

1 @EnableJpaRepositories("com.spr.repository")

简单配置支持多个package,格式如下:

1 @EnableJpaRepositories({"com.cshtong.sample.repository", "com.cshtong.tower.repository"})

2、单值和多组值配置方式

大部分注解可以都支持单个注解方式和多个注解,多个注解通常采用"{}"符号包含的一组数据。

比如:字符串形式的  "x.y.z"  =>  {"x.y.z","a.b.c"}

类别: A.class => {A.class, B.class}

3、完整的@EnableJpaRepositories注解

 1 @EnableJpaRepositories(
2 basePackages = {},
3 basePackageClasses = {},
4 includeFilters = {},
5 excludeFilters = {},
6 repositoryImplementationPostfix = "Impl",
7 namedQueriesLocation = "",//META-INF/jpa-named-queries.properties
8 queryLookupStrategy=QueryLookupStrategy.Key.CREATE_IF_NOT_FOUND, //QueryLookupStrategy.Key.x
9 repositoryFactoryBeanClass=JpaRepositoryFactoryBean.class, //class
10 entityManagerFactoryRef="entityManagerFactory",
11 transactionManagerRef="transactionManager",
12 considerNestedRepositories=false,
13 enableDefaultTransactions=true
14 )

下面分别解释各个配置项的作用

1)basePackage

用于配置扫描Repositories所在的package及子package。简单配置中的配置则等同于此项配置值,basePackages可以配置为单个字符串,也可以配置为字符串数组形式。

1 @EnableJpaRepositories(
2 basePackages = "com.cshtong")

多个包路径

1 @EnableJpaRepositories(
2 basePackages = {"com.cshtong.sample.repository", "com.cshtong.tower.repository"})

2)basePackageClasses

指定 Repository 类

1 @EnableJpaRepositories(basePackageClasses = BookRepository.class)
1 @EnableJpaRepositories(
2 basePackageClasses = {ShopRepository.class, OrganizationRepository.class})

备注:测试的时候发现,配置包类的一个Repositories类,该包内其他Repositores也会被加载???

3)includeFilters

过滤器,该过滤区采用ComponentScan的过滤器类

1 @EnableJpaRepositories(
2 includeFilters={@ComponentScan.Filter(type=FilterType.ANNOTATION, value=Repository.class)})

4)excludeFilters

不包含过滤器

1 @EnableJpaRepositories(
2 excludeFilters={
3 @ComponentScan.Filter(type=FilterType.ANNOTATION, value=Service.class),
4 @ComponentScan.Filter(type=FilterType.ANNOTATION, value=Controller.class)})

5)repositoryImplementationPostfix

实现类追加的尾部,比如ShopRepository,对应的为ShopRepositoryImpl

6)namedQueriesLocation

named SQL存放的位置,默认为META-INF/jpa-named-queries.properties

7)queryLookupStrategy

构建条件查询的策略,包含三种方式CREATE,USE_DECLARED_QUERY,CREATE_IF_NOT_FOUND

  • CREATE:按照接口名称自动构建查询
  • USE_DECLARED_QUERY:用户声明查询
  • CREATE_IF_NOT_FOUND:先搜索用户声明的,不存在则自动构建

该策略针对如下通过接口名称自动生成查询的场景

  List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);

  // Enables the distinct flag for the query
List<Person> findDistinctPeopleByLastnameOrFirstname(String lastname, String firstname);
List<Person> findPeopleDistinctByLastnameOrFirstname(String lastname, String firstname); // Enabling ignoring case for an individual property
List<Person> findByLastnameIgnoreCase(String lastname);
// Enabling ignoring case for all suitable properties
List<Person> findByLastnameAndFirstnameAllIgnoreCase(String lastname, String firstname); // Enabling static ORDER BY for a query
List<Person> findByLastnameOrderByFirstnameAsc(String lastname);
List<Person> findByLastnameOrderByFirstnameDesc(String lastname)

8)repositoryFactoryBeanClass

指定Repository的工厂类

9)entityManagerFactoryRef

实体管理工厂引用名称,对应到@Bean注解对应的方法

 1     @Bean
2 public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
3 LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
4 entityManagerFactoryBean.setDataSource(dataSource());
5 entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistenceProvider.class);
6 entityManagerFactoryBean
7 .setPackagesToScan(env.getRequiredProperty(PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN));
8 entityManagerFactoryBean.setJpaProperties(hibProperties());
9 return entityManagerFactoryBean;
10 }

10)transactionManagerRef

事务管理工厂引用名称,对应到@Bean注解对应的方法

1
2
3
4
5
6
@Bean
public JpaTransactionManager transactionManager() {
    JpaTransactionManager transactionManager = new JpaTransactionManager();
    transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
    return transactionManager;
}

  

Spring Data JPA @EnableJpaRepositories配置详解的更多相关文章

  1. Spring 入门 web.xml配置详解

    Spring 入门 web.xml配置详解 https://www.cnblogs.com/cczz_11/p/4363314.html https://blog.csdn.net/hellolove ...

  2. Spring学习 6- Spring MVC (Spring MVC原理及配置详解)

    百度的面试官问:Web容器,Servlet容器,SpringMVC容器的区别: 我还写了个文章,说明web容器与servlet容器的联系,参考:servlet单实例多线程模式 这个文章有web容器与s ...

  3. spring boot application properties配置详解

    # =================================================================== # COMMON SPRING BOOT PROPERTIE ...

  4. Spring Boot整合Mybatis配置详解

    首先,你得有个Spring Boot项目. 平时开发常用的repository包在mybatis里被替换成了mapper. 配置: 1.引入依赖: <dependency> <gro ...

  5. spring security 3.2 配置详解(结合数据库)

    没事就来了解下spring security.网上找了很多资料.有过时的,也有不是很全面的.各种问题也算是让我碰了个遍.这样吧.我先把整个流程写下来,之后在各个易混点分析吧. 1.建立几个必要的页面. ...

  6. 笔记:Spring Cloud Ribbon 客户端配置详解

    自动化配置 由于 Ribbon 中定义的每一个接口都有多种不同的策略实现,同时这些接口之间又有一定的依赖关系,Spring Cloud Ribbon 中的自动化配置能够很方便的自动化构建接口的具体实现 ...

  7. 电商网站开发记录(三) Spring的引入,以及配置详解

    1.web.xml配置注解<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi=& ...

  8. Spring Cloud Eureka 常用配置详解,建议收藏!

    前几天,栈长分享了 <Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!>,今天来分享下 Spring Cloud Eureka 常用的一些参数配置及说 ...

  9. Spring声明式事务配置详解

    Spring支持编程式事务管理和声明式的事务管理. 编程式事务管理 将事务管理代码嵌到业务方法中来控制事务的提交和回滚 缺点:必须在每个事务操作业务逻辑中包含额外的事务管理代码 声明式事务管理 一般情 ...

随机推荐

  1. DayOfWeek

    int a  =(int)oneDate.DayOfWeek;  返回的直接就是 1,2,3,4,5,6,  星期日返回的是0

  2. android开发环境搭建(ubuntu15.04+jdk8+eclipse+android sdk)

    开始学习android开发,首先对其环境对搭建比较重要.平台可以选择window/linux/mac等,这里,我选择ubuntu系统,方法比较原始,当然也可以直接用google提供的android s ...

  3. CSS基本知识6-CSS字体

    首先要考虑的是文本的排版,实际上有这玩意,Word还需要吗?不需要了.我们列下文本所涉及的操作: CSS 文本属性 属性 描述 color 设置文本颜色 direction 设置文本方向. line- ...

  4. mysql CREATE USER

    CREATE USER 'Rhine'@'%' IDENTIFIED BY 'Rhine@2015'; GRANT ALL ON *.* TO 'Rhine'@'%'; flush privilege ...

  5. tomcat远程部署应用

    Tomcat安装成功后,在ip地址:8080上就可以看见熟悉的首页,在这个首页中,上方有一个manage app按钮,点击就可以进行应用管理了.这样就不需要使用ftp把war包传上去了. 要想远程部署 ...

  6. 微信JSSDK javascript 开发 代码片段,仅供参考

    最全面最专业的微信公众平台开发教程:http://www.cnblogs.com/txw1958/p/weixin-js-sdk-demo.html 比较完整的分享教程:http://www.cnbl ...

  7. 用java下载hdfs文件报NullPointerException

    用fs.copyToLocalFile( hdfsPath,localPath);下载hdfs的文件会报NullPointerException,具体报错为: java.lang.NullPointe ...

  8. Linux 查找文件并删除文件内容

    find * ./ |while read file; do echo ''>$file; done

  9. e-chart 本地加载中国地图

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  10. CSS3学习(圆角、图片、阴影、背景、渐变、文本、字体、2D、3D、过渡等)

    matrix CSS3 1.  圆角 border-radius:边框圆角的圆角半径 四个值:第一个值为左上角,第二个值为右上角,第三个值为右下角,第四个值为左下角. 三个值:第一个值为左上角, 第二 ...