Spring Data JPA从入门到精通(第三部分)


传送门:
Spring Data JPA从入门到精通(第一部分)
Spring Data JPA从入门到精通(第二部分)
Spring Data JPA从入门到精通(第三部分)


所有代码均源自spring-data#2.2.6版本

第9章 IntelliJ Idea与Spring JPA

  1. DataBase插件,可直连数据库
  • 感觉Navicat活着DataGrip更棒.
  1. Persistence及JPA插件
  • 生成Hibernate.xml
  • 进入Entity界面,即可生成ER图,编辑表.
  • 地下Spring的Tab,有整个项目的Repository列表
  1. Idea 视图: Hierarchy,Sturcture,Diagrams,Debug

第10章 Spring Data Redis

  1. Jedis使用
  • 基本使用(直接用JedisClient)
  • 连接池(使用JedisPool)
  • 高可用(Pool加哨兵重连)
  • 客户端分片(使用ShardedJedisPool)
  • 使用场景(加缓存处理)
  1. Spring boot + Spring Data Jedis

Spring Boot已经自带了RedisAutoConfiguration,它会生成一个JedisConnectionFactory,里面已经完成了JedisPool的配置.(读取spring.redis配置),并绑定到RedisTemplate上,这样我们直接注入模板类即可使用Redis了.

  1. Spring Data Jedis结合Cache
  • 默认Spring的缓存是放在内存里面的,使用Redis在大多数情况是一个更稳妥的方案.
  • Spring Cache的核心类是CacheManager,作为Spring提供的各种缓存技术的抽象接口
  • @Cacheable注解的使用,提供先从缓存找,找不到再实际执行的逻辑
public @interface Cacheable {
    
    //应用到Cache的名字,可以有多个Cache存在,也可应用于不同的Cache
    //如可同时使用EChache和Redis
    @AliasFor("cacheNames")
    String[] value() default {};
    
    String[] cacheNames() default {};
    
    //核心配置,缓存的名字,里面可以Spel.
    String key() default "";
    
    String keyGenerator() default "";
    
    //不仅Cache可以有多个,连Manager也可以多个
    String cacheManager() default "";
    
    String cacheResolver() default "";
    
    //被缓存满足的条件,里面可以Spel.
    String condition() default "";
    
    //不缓存的条件,里面可以Spel.
    String unless() default "";
    
    boolean sync() default false;
}
  • @CachePut,@CacheEvict,@Caching
  • Spring Boot已经自带了CacheAutoConfiguration + @EnableCacheing即可自动配置,可以自定义CacheConfigurerSupport产生多个CacheManager,也可以实现KeyGenerator自定义缓存的名称.

第11章 SpEl表达式

  1. SPEL介绍: Spel是Spring提供表达式语言,他能灵活地进行表达式求值.注意同${}开头的属性求值不懂,Spel注重的是Bean的求值.

  2. 基础语法: 逻辑运算,数学运算,Bean方法调用,正则表达式,List和Map操作

  3. 主要的类

  • ExpressionParser: 解析字符串为Expression
  • ParserContext: 提供Parser的上下文,其默认实现TemplateParserContext指明了"#{"开头,"}"结尾.
public TemplateParserContext() {
        this("#{", "}");
    }
  • EvaluationContext: 提供在表达式求值中的解析属性,方法,字段的值和类型,其默认实现StandardEvaluationContext使用了反射完成其功能.
  • SpelParserConfiguration: 编译器配置
  1. Spring Data JPA中使用SpEl场景
  • 在Query注解中使用#entityName保留字作为查询表名,使用#"参数名"直接读取查询参数
  • 在@Cacheable和@CachePut中读取参数或存储值
  • @Value中读取配置信息,如#{systemProperties['somePorp']}读取系统属性.

第12章 Spring Data Rest

  1. Spring Data Rest 相当强大,只需要定义Repository,有Spring Data Rest中的RepositoryRestHandlerMapping自动生成符合HATEOAS风格的Http Restful 接口.
  2. 通过在Repository上配置@RepositoryRestResource和在Entity上配置@RestResource修改默认的Restful配置
  3. RepositoryRestMvcAutoConfiguration自动配置.
  4. 既然HATEOAS风格本身就不流行,这个就深度自动化的东西,肯定更难有使用场景了.

附录:

  1. Repository Query Method关键字: 有个Type枚举
  2. Repository Query Method返回值类型: 注意有特殊的地理空间信息类GeoResult
  3. JPA注解,Audit注解,Hibernate的Valid注解
  4. Spring MVC注解
  5. JPA在application.yml中的配置(具体可查看reference)

你可能感兴趣的:(Spring Data JPA从入门到精通(第三部分))