什麼是JPA? 全名Java Persistence API, 通過註解或XML描述, 來指定對象與關係表之間的映射關係(Mapping), 並將實體對象持久化到資料庫中
JPA僅是一種規範, 定義了某些接口(interace), 需要實現這些接口才能運作, 而Hibernate就是實現了JPA接口的ORM框架
什麼是Spring Data JPA?
Spring Data JPA是Spring提供的一套簡化JPA開發的框架, 按照約定好的function命名規則寫dao層接口, 就可以在不實現(implemention)接口的情況下, 直接對資料庫做訪問與操作, 除了基本的CRUD方法, 還提供了分頁, 排序....功能。
而Spring Boot推薦使用Spring Data JPA來做ORM持久層, 不僅Spring框架對其支持度非常完美, 還很大程度的縮減了開發過程。
首先在專案下建立一個Model資料夾, 然後在底下新增Member.java
@Entity
public class Member {
@Id
private String mid;
private String email;
private String password;
private String firstName;
private String lastName;
private Date createTime;
private Date updateTime;
public Member(String email, String password, String firstName, String lastName) {
this.mid = UUID.randomUUID().toString().replaceAll("-", "");
this.email = email;
this.password = password;
this.firstName = firstName;
this.lastName = lastName;
}
public String getMid() {
return mid;
}
public void setMid(String mid) {
this.mid = mid;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}
然後建立Dao資料夾, 並新增MemberRepository.java
@Repository
public interface MemberRepository extends JpaRepository<Member, Long> {
}
在application.properties底下新增
spring.data.rest.base-path=/api
這樣就完成了
什麼!? 這樣就能查詢與操作, 有這麼簡單?
沒錯, 簡單到讓你懷疑人生。
現在新增一筆資料, 來查查看
新增DatabaseLoder.java
@Component
public class DatabaseLoader implements CommandLineRunner {
@Autowired
private MemberRepository memberRepository;
@Override
public void run(String... args) throws Exception {
Member member = new Member("michael@gmail.com", "abc12345", "michael", "jordan");
memberRepository.save(member);
}
}
現在點選run啟動專案, 打開web browser輸入
localhost:8080/api/members
剛剛新增的資料出來了, 是不是很快很方便呢, 完全不用寫Dao層, Spring都幫我們完成了
JpaRepository除了具備基本的CRUD功能, 還有分頁與排序...等
下一章 Spring Data JPA 寫入與讀取資料 (2)