搭建簡(jiǎn)單的Spring-Data JPA項(xiàng)目
一、 JPA概述
JPA的全稱是Java Persistence API, 即Java 持久化API,是SUN公司推出的一套基于ORM的規(guī)范,內(nèi)部是由一系列的接口和抽象類構(gòu)成。
JPA通過JDK 5.0注解描述對(duì)象-關(guān)系表的映射關(guān)系,并將運(yùn)行期的實(shí)體對(duì)象持久化到數(shù)據(jù)庫(kù)中。
二、jpa_demo
step1:首先導(dǎo)入需要的依賴
<dependencies> ????????<!-- junit --> ????????<dependency> ????????????<groupId>junit</groupId> ????????????<artifactId>junit</artifactId> ????????????<version>4.12</version> ????????????<scope>test</scope> ????????</dependency> ????????<!-- hibernate對(duì)jpa的支持包 --> ? ? ? ? <dependency> ? ? ? ? ? ? <groupId>org.hibernate</groupId> ? ? ? ? ? ? <artifactId>hibernate-entitymanager</artifactId> ? ? ? ? ? ? <version>5.6.3.Final</version> ? ? ? ? </dependency> ????????<!-- c3p0 --> ? ? ? ? <dependency> ? ? ? ? ? ? <groupId>org.hibernate</groupId> ? ? ? ? ? ? <artifactId>hibernate-c3p0</artifactId> ? ? ? ? ? ? <version>5.6.1.Final</version> ? ? ? ? </dependency> ????????<!-- log日志 --> ????????<dependency> ????????????<groupId>log4j</groupId> ????????????<artifactId>log4j</artifactId> ????????????<version>1.2.17</version> ????????</dependency> ? ? ? ?? ????????<!-- Mysql and MariaDB --> ????????<dependency> ????????????<groupId>mysql</groupId> ????????????<artifactId>mysql-connector-java</artifactId> ????????????<version>5.1.6</version> ????????</dependency> ????</dependencies>
step2:編寫實(shí)體類和數(shù)據(jù)庫(kù)表的映射配置[重點(diǎn)]
以客戶實(shí)體類為例(包含字段:custId,custName,custPhone)
在實(shí)體類上使用JPA注解的形式配置映射關(guān)系
@Entity @Table(name="cst_customer") public class Customer { ????@Id ????@GeneratedValue(strategy=GenerationType.IDENTITY)? ????@Column(name="cust_id") ????private Long custId; ????@Column(name="cust_name") ????private String custName; ????@Column(name="cust_phone") ????private String custPhone; ? ?? ? ? getter/setter...
注解說明:
@Entity:聲明此類為實(shí)體類。
@Table(name="數(shù)據(jù)庫(kù)表名"):實(shí)體類和表的映射地址。
@Id:聲明當(dāng)前屬性為主鍵。
@GeneratedValue(strategy=GenerationType.*):配置主鍵的生成策略
- TABLE:使用一個(gè)特定的數(shù)據(jù)庫(kù)表格來保存主鍵
- SEQUENCE:根據(jù)底層數(shù)據(jù)庫(kù)的序列來生成主鍵,條件是數(shù)據(jù)庫(kù)支持序列
- IDENTITY:主鍵由數(shù)據(jù)庫(kù)自動(dòng)生成(主要是自動(dòng)增長(zhǎng)型)
- AUTO:主鍵由程序控制。
@Column
- 作用:指定實(shí)體類屬性和數(shù)據(jù)庫(kù)表之間的對(duì)應(yīng)關(guān)系
- 屬性:
- name:指定數(shù)據(jù)庫(kù)表的列名稱。
- unique:是否唯一
- nullable:是否可以為空
- inserttable:是否可以插入
- updateable:是否可以更新
- columnDefinition: 定義建表時(shí)創(chuàng)建此列的DDL
- secondaryTable: 從表名。如果此列不建在主表上(默認(rèn)建在主表),該屬性定義該列所在從表的名字搭建開發(fā)環(huán)境[重點(diǎn)]
step3:編寫配置文件屬性
yml文件:
數(shù)據(jù)庫(kù)配置:****** jpa: ? ? hibernate: ? ? ? ddl-auto: update ? ? show-sql: true
屬性說明:
hibernate.ddl-auto:
- create:?jiǎn)?dòng)時(shí)刪數(shù)據(jù)庫(kù)中的表,然后創(chuàng)建,退出時(shí)不刪除數(shù)據(jù)表。
- create-drop:?jiǎn)?dòng)時(shí)刪數(shù)據(jù)庫(kù)中的表,然后創(chuàng)建,退出時(shí)刪除數(shù)據(jù)表 如果表不存在報(bào)錯(cuò)。
- update:如果啟動(dòng)時(shí)表格式不一致則更新表,原有數(shù)據(jù)保留。
- validate:項(xiàng)目啟動(dòng)表結(jié)構(gòu)進(jìn)行校驗(yàn) 如果不一致則報(bào)錯(cuò)。
show-sql:調(diào)用函數(shù)時(shí),是否在控制臺(tái)打印sql語(yǔ)句。
step3編寫符合Spring Data JPA規(guī)范的Dao層接口
Spring Data JPA是spring提供的一款對(duì)于數(shù)據(jù)訪問層(Dao層)的框架,使用Spring Data JPA,只需要按照框架的規(guī)范提供dao接口,不需要實(shí)現(xiàn)類就可以完成數(shù)據(jù)庫(kù)的增刪改查、分頁(yè)查詢等方法的定義,極大的簡(jiǎn)化了我們的開發(fā)過程。
在Spring Data JPA中,對(duì)于定義符合規(guī)范的Dao層接口,我們只需要遵循以下幾點(diǎn)就可以了:
創(chuàng)建一個(gè)Dao層接口,并實(shí)現(xiàn)JpaRepository和JpaSpecificationExecutor
提供相應(yīng)的泛型
public interface CustomerDao extends JpaRepository<Customer, Long>, JpaSpecificationExecutor<Customer> { }
說明:
- JpaRepository:該接口為我們jpa提供了基本的簡(jiǎn)單的增刪改查方法。
- JpaSpecificationExecutor:提供數(shù)據(jù)的復(fù)雜操作。
OK!現(xiàn)在我們就能對(duì)實(shí)體進(jìn)行的簡(jiǎn)單操作啦~
step4:編寫測(cè)試用例
public class DataTest { ????@Autowired ????private CustomerDao customerDao; ????/** ?????* 保存一個(gè)客戶數(shù)據(jù) ? ? ?* 調(diào)用save(obj)方法 ?????*/ ????@Test ????public void testSave() { ????????Customer c = new Customer(); ????????c.setCustName("掘金"); ????????customerDao.save(c); ????}
執(zhí)行測(cè)試用例查看數(shù)據(jù)庫(kù)顯示數(shù)據(jù)添加成功!
到此這篇關(guān)于搭建簡(jiǎn)單的Spring-Data JPA項(xiàng)目的文章就介紹到這了,更多相關(guān)Spring-Data JPA搭建項(xiàng)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA 設(shè)置顯示內(nèi)存的使用情況和內(nèi)存回收的方法
這篇文章主要介紹了IDEA 設(shè)置顯示內(nèi)存的使用情況和內(nèi)存回收的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04Java Swing組件文件選擇器JFileChooser簡(jiǎn)單用法示例
這篇文章主要介紹了Java Swing組件文件選擇器JFileChooser簡(jiǎn)單用法,結(jié)合實(shí)例形式分析了Swing組件中的文件選擇器JFileChooser的簡(jiǎn)單使用方法,需要的朋友可以參考下2017-11-11SpringBoot如何根據(jù)用戶系統(tǒng)時(shí)區(qū)動(dòng)態(tài)展示時(shí)間
這篇文章主要介紹了SpringBoot如何根據(jù)用戶系統(tǒng)時(shí)區(qū)動(dòng)態(tài)展示時(shí)間,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01MyBatis批量添加數(shù)據(jù)2種實(shí)現(xiàn)方法
這篇文章主要介紹了MyBatis批量添加數(shù)據(jù)2種實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06SpringBoot使用 druid 連接池來優(yōu)化分頁(yè)語(yǔ)句
這篇文章主要介紹了SpringBoot使用 druid 連接池來優(yōu)化分頁(yè)語(yǔ)句,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11動(dòng)態(tài)更改Spring定時(shí)任務(wù)Cron表達(dá)式的優(yōu)雅方案實(shí)例詳解
spring定時(shí)器非常強(qiáng)大,但是有時(shí)候我們需要在不需要重啟應(yīng)用就可以動(dòng)態(tài)的改變Cron表達(dá)式的值,下面這篇文章主要給大家介紹了關(guān)于動(dòng)態(tài)更改Spring定時(shí)任務(wù)Cron表達(dá)式的優(yōu)雅方案,需要的朋友可以參考下2022-12-12基于OpenCV與JVM實(shí)現(xiàn)矩陣處理圖像
本文主要介紹了Java圖像處理實(shí)戰(zhàn)之基于OpenCV與JVM實(shí)現(xiàn)矩陣處理圖像。文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)圖像處理有一定的幫助,感興趣的可以試一試2022-01-01