什么是JPA

JPA(java persistence API)用于管理JavaEE和JavaSE环境中的持久化,以及对象/关系映射的JavaAPI

  • 是处理数据持久化的一个接口,规范
  • 核心概念
    • 实体(pojo)表示关系数据库中的一个表
    • 每个实体实例对应着该表中的一行
    • 类必须用javax.persistence.Entity注解
    • 类必须含有一个public或者protected的无参构造函数
    • 当实体实例被当做值以分离对象的方式进行传递(例如通过会话bean的远程业务接口)则该类必须实现Serializable(序列化)接口
    • 唯一的对象标志符,简单主键(javax.persistence.Id),复合主键(javax.persistence.EmbeddledId和javax.persistence.IdClass)
  • 关系
    • 一对一:@OneToOne
    • 一对多:@OneToMany
    • 多对一:@ManyToOne
    • 多对多:@ManyToMany
  • EntityManager
    • 管理实体的一个类,接口
    • 定义与持久性上下文进行交互的方法
    • 创建和删除持久实体类,通过实体的主键查找实体
    • 允许在实体类上进行查询
  • spring data JPA
    • 是更大spring data家族的一部分
    • 对基于JPA的数据访问层的增强支持,即对数据访问层就行了更好的规范
    • 更容易构建基于使用spring数据访问技术站的应用程序
    • 常用的接口
      • CrudRepository
        • 处理数据的增删改查等操作的接口
        public interface CrudRepository extends           
        Repository {
         S save(S,entity);
        T findOne(ID primaryKey);
        Iterable findAll();
        Long  count();
        void delete (T, entity);
        boolean exists(ID,primaryKey);
          }
        
      • PagingAndSortingRepository
        • 处理分页和排序的一个接口
          public interface PagingAndSortingRepository
            extends CrudRepository  {
                        Itarable findAll(Sort sort);
                        Page findAll(Pageable pageable);
                      }
        
    • 如何自定义接口
      • 根据方法名创建查询
        public interface PeopleRepository extends Repository{
                List findByEmailAddressAndLastname(EmailAddress emailAddress,String lastname);
                //启动distinct标志
                List findDistinctPeopleByLastNameOrFirstName(String lastname,String firstname);
                //给独立的属性启用ignore case :忽视大小写
                List findByLastNameIgnoreCase(String lastname);
                 List findByLastNameAndFistNameAllIgnoreCase(String lastname,String fistname);
                //启用order by
                 List findByLastNameOrderByFirstNameAsc(String lastname);
                 List findByLastNameOrderByFirstNameDesc(String lastname);
                  .......
          }
      

你可能感兴趣的:(什么是JPA)