iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 6
0

上一章 Day 5 - Spring Boot 啟動與測試

什麼是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

https://ithelp.ithome.com.tw/upload/images/20190922/20119510c1rCKdpo91.png

剛剛新增的資料出來了, 是不是很快很方便呢, 完全不用寫Dao層, Spring都幫我們完成了

JpaRepository除了具備基本的CRUD功能, 還有分頁與排序...等

下一章 Spring Data JPA 寫入與讀取資料 (2)


上一篇
Day 5 - Spring Boot 啟動與測試
下一篇
Day 7 - Spring Data JPA 寫入與讀取資料 (2)
系列文
Spring Boot and React - 前後端 30 天分手日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
孤獨一隻雞
iT邦研究生 5 級 ‧ 2022-01-22 21:49:21

請問一下,有什麼,原因或想法,讓您把Repository歸類到DAO的資料夾底下呢?

0
q816697q
iT邦新手 5 級 ‧ 2022-04-30 00:09:23

請問我的步驟一樣怎麼沒有新增呢
https://ithelp.ithome.com.tw/upload/images/20220430/20118103UtyiWv6f26.jpg

我要留言

立即登入留言