《Spring Data JPA官方文档》_笔记


https://docs.spring.io/spring-data/jpa/docs/current/reference/html/

4 Working with Spring Data Repositories

4.1 Core concepts

Repository–CrudRepository–PagingAndSortingRepository;
JpaRepository继承PagingAndSortingRepository、QueryByExampleExecutor。
Pageable,实现类PageRequest、QPageRequest;构造器构建。
Sort,构造器构造实例,参数Order(构造器)、Direction。NullHandling,null值策略。

4.2 Query methods

@EnableJpaRepositories,启用jpa;repository默认扫描当前包。
DSL方式命名查询方法。

4.3 Defining Repository Interfaces

4.3.2 Null Handling of Repository Methods
@NonNullApi;标记package,包内方法参数、返回值不可为nul
@NonNull/@Nullable;标记方法、返回值;
4.3.3 Using Repositories with Multiple Spring Data Modules
存在多个spring-data模块时,spring-data使用严格模式。通过repository继承类型、domain注解、启用注解basepackages属性判定归属模块(包)。
同一模块,多个数据源时;通过启用注解指定entityManagerFactoryRef、transactionManagerRef、basePackages。
mybatis多数据源,@MapperScan指定basePakages、sqlSessionFactoryRef。
domain可有多个模块的实体注解,以复用。

4.4 Defining Query Methods

DSL、注解定义query。
DSL命名规则、参数处理、返回类型包装
4.4.1 Query Lookup Strategies
@Enable${store}Repositories,queryLookipStrategy属性;Key枚举类:

  • CREATE;根据方法名构建query
  • USE_DECLARED_QUERY;根据注解构建query,无时抛异常
  • CREATE_IF_NOT_FOUND;注解优先,默认

4.4.2 Query Creation
前缀:find…By、count…By(数量);方法名第一个By为分隔符
前缀关键词:Distinct、First[num]、Top[num]
逻辑:And、Or
关系表达式,列名[关键词],关键词为空则为等于:

  • LessThan、GreaterThan;大小,
  • LessThanEqual、GreaterThanEqual;
  • Not;不等于,findBySexNot
  • Is、Equals;等于
  • After、Before;时间
  • IsNull、NotNull;空、非空
  • Like、NotLike;字符串
  • StartingWith、EndingWith、Containing;字符串,自动拼接%
  • IgnoreCase、AllIgnoreCase;不区分大小写
  • In、NotIn、Between;
  • TRUE、FALSE;为true、false;findByIsSuccessTrue
  • OrderBy;排序,默认Asc

参数:Sort排序、Pageable分页排序;位于形参最后
分类,group by;已通过@ElementCollection、@Embeddable实现。
4.4.3 Property Expressions
通过address.zipCode查找person:
findByAddressZipCode();自动识别
findByAddress_ZipCode();手动区分,推荐
4.4.4 Sepecial parameter handling
Sort排序,Pageable分页;形参列表最后一个
Page findByLastname(String lastname, Pageable pageable);查找总条目数,may expensive
Slice findByLastname(String lastname, Pageable pageable);返回是否还有记录。
List findByLastname(String lastname, Pageable pageable);
List findByLastname(String lastname, Sort sort);
4.4.5 Limiting Query Results
关键词:Distinct、First[num]、Top[num];限制结果集
如果只返回一条记录,返回类型可包装,Optional<T>
限制结果集应用于分页、分片时,只限制当前分页、分片数据;而非总记录。
4.4.6 Streaming query results
返回结果包装为Stream。使用后需关闭,close()。
Stream findAll();
4.4.7 Async query results
@Async,异步返回。
@Async
Future findByFirstname(String firstname);
@Async
CompletableFuture findOneByFirstname(String firstname);
@Async
ListenableFuture findOneByLastname(String lastname);

5 JPA Repositories

5.1 Introduction

5.1.2 JavaConfig
@EnableJpaRepositories;重要属性:basePakages、EntityManagerFactoryRef、transactionManagerRef
装配:DataSource、PlatformTransactionManager、LocalContainerEntityManagerFactoryBean

5.2 Persisting Entities

保存entity时,调用EntityManager#persist()/merge()。
判定entity是否为new策略:
Id-Property inspection;default。id为null为new,否则old。
Implements Persistable/EntityInformation。

5.3 Query Methods

@NamedQuery,定义查询语句,标记entity类;属性:name、query
@Query,定义sql语句;属性:value、countQuery、nativeQuery(JPQL为false)
sql中引用参数:?1、:pName;Sort、Pageable参数置于形参列表最后,不需引用。
@Modifying,标记update、insert、delete类sql。提供事务?
@QueryHints,查询提示;value,forCounting

5.6 Query by Example

通过构建Example查询。

5.8 Locking

@Lock,设定锁模式;LockModeType:READ、WRITE、NONE、OPTIMISTIC*
对JpaRepository接口方法,可重新声明以修改锁模式;重新声明需符合dsl命名规则、或@Query指定sql。
乐观锁,必须使用java.persistence.Version注解标记字段,以实现乐观锁。

5.9 Auditing

https://www.jianshu.com/p/8d612d5fea38
@EnableJpaAuditing,启用;auditorAwareRef关联AuditorAware bean,提供用户。
@CreateBy、@LastModifiedBy;操作用户;
@CreatedTime、@LastModifiedTime;操作时间
@EntityListeners;entity变化监听,而后调用回调函数。

SpringBoot集成jpa

https://blog.csdn.net/a120805481/article/details/88071993
其他

  1. JPA方法名命名规则:https://www.jianshu.com/p/1d6f27f675bb
  2. 配置jpa hibernate其他参数,jpa.properties.hibernate.*
  3. springboot2配置jpa:https://blog.csdn.net/a120805481/article/details/88071993
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 很高兴听到您对Spring Boot 2的学习感兴趣。Spring Boot是一个基于Spring框架的快速开发应用程序的工具,它提供了一种简单的方式来创建和配置Spring应用程序。以下是一些学习Spring Boot 2的笔记: 1. Spring Boot 2的新特性:Spring Boot 2相对于Spring Boot 1.x版本来说,有许多新的特性和改进。例如,它支持Java 9和10,提供了更好的响应式编程支持,以及更好的安全性和监控功能。 2. Spring Boot 2的核心组件:Spring Boot 2的核心组件包括Spring Framework、Spring MVC、Spring DataSpring Security等。这些组件提供了一系列的功能和工具,使得开发人员可以更加轻松地构建和管理应用程序。 3. Spring Boot 2的配置:Spring Boot 2的配置非常简单,它提供了一种基于注解的方式来配置应用程序。开发人员可以使用@Configuration和@Bean注解来定义配置类和Bean。 4. Spring Boot 2的启动器:Spring Boot 2提供了一系列的启动器,这些启动器可以帮助开发人员快速地集成各种常用的框架和库,例如Spring Data JPASpring Security、Thymeleaf等。 5. Spring Boot 2的测试:Spring Boot 2提供了一系列的测试工具,例如Spring Boot Test、Mockito、JUnit等。这些工具可以帮助开发人员编写高质量的单元测试和集成测试。 希望这些笔记对您学习Spring Boot 2有所帮助。如果您有任何问题或疑问,请随时联系我。 ### 回答2: Spring Boot 是一个非常流行的开源框架,它的目的是使 Spring 应用程序的开发过程更加简单、快速和高效。Spring Boot 2 是 Spring Boot 框架的第二个版本,已经成为了当今业界最流行的 Java 开发框架之一。 Spring Boot 2 的新特性: 1. 支持 JDK 9。Spring Boot 2 已经支持 JDK 9 所带来的新特性和功能。 2. 基于 Reactive Streams 的编程模型。Spring Boot 2 增加了对 Reactive Streams 的支持,可以开发响应式应用程序,从而提高了系统的吞吐量和性能。 3. 异步服务器支持。Spring Boot 2 已经支持多种异步服务器,包括 Netty、Undertow 和 Tomcat。 4. 更全面的 Actuator 组件。Actuator 是 Spring Boot 的监控和管理组件,Spring Boot 2 在 Actuator 组件上增加了更多的指标、健康检查和应用程序信息。 5. 更好的自定义配置。Spring Boot 2 简化了自定义配置的流程,使得用户可以更快速地配置应用程序。 学习 Spring Boot 2 的步骤如下: 1. 掌握 Spring 基础知识。学习 Spring Boot 2 前需要掌握 Spring MVC、Spring Data 等相关的知识。 2. 下载安装 Spring Boot。Spring Boot 2 可以在官网上下载。 3. 学习 Spring Boot 核心组件。包括 Spring IoC、Spring AOP、Spring MVC 等核心组件。 4. 开发一个 Spring Boot 应用程序。可以从一个简单的 Hello World 开始,逐渐增加功能,学习和理解 Spring Boot 的各种特性和功能。 5. 掌握 Spring Boot 的自动配置。Spring Boot 的自动配置可以大大减少开发人员的工作量,学习和掌握自动配置非常重要。 总之,学习 Spring Boot 2 需要不断地实践和探索,只有通过实际的开发经验才能真正掌握和学会这个框架。 ### 回答3: Spring Boot是一款基于Spring框架的快速应用开发框架。在应用开发的过程中,Spring Boot可以自动配置一个相对完整的Spring应用程序,从而大大减少了开发者的工作量,提高了开发效率。显然,它的学习是很有必要的。 Spring Boot 2.x版本相比于1.x版本在很多方面都进行了升级和改进。在学习的过程中,需要关注的重点在以下几点: 1. 新建Spring Boot项目 Spring Boot提供了Spring Initializr来快速创建新的Spring Boot项目。在构建项目的过程中,我们可以自定义项目的基本信息、项目类型、依赖关系等,可以根据需求灵活选择。 2. Spring Boot自动配置 Spring Boot借助于自动配置功能,可以为开发者免去大量的配置工作。Spring Boot把一些常用的配置提取为Starter,开发者只需要引入这些Starter即可实现自动配置,大大降低了开发成本。 3. Spring Boot集成 Spring Boot集成了众多流行的框架,如MyBatis、Hibernate、JPA、Thymeleaf等,只需要简单的配置就可以实现对这些框架的集成,使得在开发中更加方便。 4. Spring Boot监控管理 Spring Boot通过Actuator提供了一系列配置和管理服务,可以实现对Spring Boot应用程序的监控和管理。开发者可以通过这些服务来监控应用程序的运行状态、访问量、资源使用情况等。 5. Spring Boot测试 Spring Boot天生适合进行单元测试和集成测试,可以使用JUnit、Mockito、Spring Test等框架进行测试。同样可以利用Spring Boot提供的Test Starter进行自动配置,减少测试的开发成本。 以上就是Spring Boot 2的一些学习笔记,它的结构简洁,代码清晰,便于开发者使用。无疑,Spring Boot 2是一个非常适合作为开发者日常工作的框架。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值