什么是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<T,ID extendsSerializable> extends           
        Repository<T,ID> {
        <S extends T> S save(S,entity);
        T findOne(ID primaryKey);
        Iterable<T> findAll();
        Long  count();
        void delete (T, entity);
        boolean exists(ID,primaryKey);
          }
        
      • PagingAndSortingRepository
        • 处理分页和排序的一个接口
          public interface PagingAndSortingRepository<T,ID extends Serializable>
            extends CrudRepository<T,ID>  {
                        Itarable<T> findAll(Sort sort);
                        Page<T> findAll(Pageable pageable);
                      }
        
    • 如何自定义接口
      • 根据方法名创建查询
        public interface PeopleRepository extends Repository<User,Long>{
                List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress,String lastname);
                //启动distinct标志
                List<Person> findDistinctPeopleByLastNameOrFirstName(String lastname,String firstname);
                //给独立的属性启用ignore case :忽视大小写
                List<Person> findByLastNameIgnoreCase(String lastname);
                 List<Person> findByLastNameAndFistNameAllIgnoreCase(String lastname,String fistname);
                //启用order by
                 List<Person> findByLastNameOrderByFirstNameAsc(String lastname);
                 List<Person> findByLastNameOrderByFirstNameDesc(String lastname);
                  .......
          }
      
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容