Spring Data JPA基本认识和在Spring Boot下的集成

什么是JPA

  • JPA(Java Persistemce API)是用于管理Java EE和Java SE环境中持久化,以及对像/关系映射的Java API
  • 实现:EclipseLink、Hibernate、Apache OpenJPA等。

JPA核心概念

实体
  • 实体表示关系型数据库中的表。
  • 每个实体实力对应于该表中的行。
  • 类必须用javax.persistence.Entity注解。
  • 类必须有一个public或protected的无参数构造函数。
  • 实体实例被当做值以分离对象方式进行传递(例如通过回话bean的远程业务接口),则该类必须实现Serializable接口。
  • 唯一的对象标识符:简单主键(javax.persistence.Id)、复合主键(javax.persistence.Embeddedld何javax.persistence.IdClass)
关系
  • 一对一:@OneToOne
  • 一对多:@OneToMany
  • 多对一:@ManyToOne
  • 多对多:@ManyToMany
EntityManager接口
  • 定义用于持久性上下文进行交互的方法。
  • 创建和删除持久化实体实例,通过实体的主键查找实例。
  • 允许在实体上进行查询。

什么是Spring Data JPA

  • Spring Data家族的一部分。
  • 对基于JPA的数据访问层的增强支持。
  • 更容易构建使用Spring数据访问技术栈的应用。

Spring Data JPA常用接口

  • CrudRepository
public interface CrudRepository<T, ID> extends Repository<T, ID> {
    <S extends T> S save(S var1);

    <S extends T> Iterable<S> saveAll(Iterable<S> var1);

    Optional<T> findById(ID var1);

    boolean existsById(ID var1);

    Iterable<T> findAll();

    Iterable<T> findAllById(Iterable<ID> var1);

    long count();

    void deleteById(ID var1);

    void delete(T var1);

    void deleteAll(Iterable<? extends T> var1);

    void deleteAll();
}
  • PagingAndSortingRepository
    对上面的CrudRepository做了一些扩展,提供排序和分页的方法。
public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> {
    Iterable<T> findAll(Sort var1);

    Page<T> findAll(Pageable var1);
}

Spring Data JPA自定义接口

根据方法名创建查询
public interface PersonRepository extends Repository<User, Long>{
    List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname);
    
    //启用 distinct 去重标志
    List<Person> findDistinctPeopleByLastnameOrFirstname(String lastname, String firstname);
    List<People> findPeopleDistinctByLastnameOrFirstname(Strinf lastname, String firstname);
    
    //给独立的属性启用 ignore case
    List<Person> findByLastnameIgnoreCase(String lastname);
    
    //给所有合适的属性启用 ignore case
    List<Person> findByLastnameAndFirstnameIgnoreCase(String lastname, String firstname);
    
    //启用 order by 
    List<Person> findByLastnameOrderByFirstnameAsc(String lastname);
    List<Person> findByLastnameOrderByFirstnameDesc(String lastname);
    
}

Spring Data JPA、Hibernate与Spring boot集成

配置环境
  • Mysql Community Server
  • Spring Data JPA
  • Hibernate
  • Mysql Connector

maven配置如下

		<!-- mysql驱动 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>

		<!-- springdata jpa依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值