Spring學(xué)習(xí):實(shí)踐Spring Data JPA創(chuàng)建實(shí)體類
---在學(xué)習(xí)Spring Data JPA時(shí),我們了解到它底層是使用Hibernate(JPA規(guī)范的一個(gè)實(shí)現(xiàn))來操作數(shù)據(jù)庫(kù)。在使用Spring Data JPA之前,首要任務(wù)就是創(chuàng)建實(shí)體類,并將其映射
---
在學(xué)習(xí)Spring Data JPA時(shí),我們了解到它底層是使用Hibernate(JPA規(guī)范的一個(gè)實(shí)現(xiàn))來操作數(shù)據(jù)庫(kù)。在使用Spring Data JPA之前,首要任務(wù)就是創(chuàng)建實(shí)體類,并將其映射到數(shù)據(jù)庫(kù)表。本文將分享相關(guān)的操作步驟。
創(chuàng)建SpringBoot應(yīng)用框架
首先,我們通過Spring Initializr創(chuàng)建一個(gè)基于SpringBoot的應(yīng)用框架。必要的依賴包括:Lombok(簡(jiǎn)化代碼開發(fā))、Spring Data JPA(JPA相關(guān)的依賴)和MySQL Driver(用于測(cè)試MySQL數(shù)據(jù)庫(kù))。在文件中配置數(shù)據(jù)庫(kù)連接信息,并額外添加如下配置:1. 應(yīng)用啟動(dòng)時(shí),若數(shù)據(jù)庫(kù)中沒有相應(yīng)表結(jié)構(gòu),則自動(dòng)創(chuàng)建;2. 控制臺(tái)輸出格式化后的SQL語句;3. 針對(duì)MySQL數(shù)據(jù)庫(kù),需要指明相應(yīng)的“方言”以確保使用更好的InnoDB引擎。接下來,我們定義實(shí)體類。
定義實(shí)體類及注解
在定義實(shí)體類時(shí),我們需添加一些關(guān)鍵注解。@Entity是核心注解,用于定義該類為一個(gè)實(shí)體類,與表進(jìn)行對(duì)應(yīng);@Table通過該注解指明實(shí)體對(duì)應(yīng)的表名稱;@Builder、@Data、@NoArgsConstructor、@AllArgsConstructor是Lombok相關(guān)注解,可自動(dòng)生成工廠方法、所有成員變量的get/set方法,以及無參和有參構(gòu)造函數(shù)。此外,由于涉及金額,在實(shí)體類中使用了joda-money開源類庫(kù)的Money對(duì)象。
設(shè)置主鍵列和生成規(guī)則
通過@Id注解指明主鍵列,同時(shí)通過@GeneratedValue(strategy)注解指明主鍵使用自增序列。其他成員變量與數(shù)據(jù)庫(kù)表的對(duì)應(yīng)關(guān)系默認(rèn)情況下列名和屬性名一致,如不同需使用@Column(name"列名")進(jìn)行指定。針對(duì)創(chuàng)建時(shí)間和更新時(shí)間,我們使用@CreationTimestamp和@UpdateTimestamp注解,分別在記錄第一次添加到數(shù)據(jù)庫(kù)時(shí)自動(dòng)填充當(dāng)前時(shí)間,以及在記錄更新時(shí)自動(dòng)填充當(dāng)前時(shí)間。
其他成員變量與數(shù)據(jù)庫(kù)表的對(duì)應(yīng)關(guān)系
除了主鍵列外,其他成員變量與數(shù)據(jù)庫(kù)表的對(duì)應(yīng)關(guān)系也需要注意。特別是對(duì)于joda-money開源類庫(kù)的Money類型屬性,需要指定存儲(chǔ)貨幣整數(shù)值。執(zhí)行SpringBoot啟動(dòng)類后,觀察控制臺(tái)輸出,因?yàn)閿?shù)據(jù)庫(kù)中沒有對(duì)應(yīng)表,會(huì)輸出建表語句,從中可以看出主鍵ID采用自增序列生成策略,以及Money類型的成員變量price對(duì)應(yīng)的列也采用整型存儲(chǔ)。
通過以上步驟,我們成功創(chuàng)建了實(shí)體類并將其映射到數(shù)據(jù)庫(kù)表中,為后續(xù)操作奠定了基礎(chǔ)。繼續(xù)深入學(xué)習(xí)Spring Data JPA,將有助于更好地利用其強(qiáng)大功能進(jìn)行數(shù)據(jù)持久化操作。愿這些經(jīng)驗(yàn)?zāi)軌驇椭玫乩斫夂瓦\(yùn)用Spring Data JPA。