JPA(java persistence API)用于管理JavaEE和JavaSE環(huán)境中的持久化蜂科,以及對象/關(guān)系映射的JavaAPI
- 是處理數(shù)據(jù)持久化的一個接口,規(guī)范
- 核心概念
- 實體(pojo)表示關(guān)系數(shù)據(jù)庫中的一個表
- 每個實體實例對應(yīng)著該表中的一行
- 類必須用javax.persistence.Entity注解
- 類必須含有一個public或者protected的無參構(gòu)造函數(shù)
- 當(dāng)實體實例被當(dāng)做值以分離對象的方式進行傳遞(例如通過會話bean的遠程業(yè)務(wù)接口)則該類必須實現(xiàn)Serializable(序列化)接口
- 唯一的對象標(biāo)志符株灸,簡單主鍵(javax.persistence.Id)崇摄,復(fù)合主鍵(javax.persistence.EmbeddledId和javax.persistence.IdClass)
- 關(guān)系
- 一對一:@OneToOne
- 一對多:@OneToMany
- 多對一:@ManyToOne
- 多對多:@ManyToMany
- EntityManager
- 管理實體的一個類擎值,接口
- 定義與持久性上下文進行交互的方法
- 創(chuàng)建和刪除持久實體類慌烧,通過實體的主鍵查找實體
- 允許在實體類上進行查詢
- spring data JPA
- 是更大spring data家族的一部分
- 對基于JPA的數(shù)據(jù)訪問層的增強支持,即對數(shù)據(jù)訪問層就行了更好的規(guī)范
- 更容易構(gòu)建基于使用spring數(shù)據(jù)訪問技術(shù)站的應(yīng)用程序
- 常用的接口
- CrudRepository
- 處理數(shù)據(jù)的增刪改查等操作的接口
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); }
- CrudRepository
- 如何自定義接口
- 根據(jù)方法名創(chuàng)建查詢
public interface PeopleRepository extends Repository<User,Long>{ List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress,String lastname); //啟動distinct標(biāo)志 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); ....... }