" />

欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

搭建簡(jiǎn)單的Spring-Data JPA項(xiàng)目

 更新時(shí)間:2022年02月14日 15:08:42   作者:1005908  
本文主要介紹了搭建簡(jiǎn)單的Spring-Data JPA項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

一、 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)存回收的方法

    這篇文章主要介紹了IDEA 設(shè)置顯示內(nèi)存的使用情況和內(nèi)存回收的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java Swing組件文件選擇器JFileChooser簡(jiǎn)單用法示例

    Java Swing組件文件選擇器JFileChooser簡(jiǎn)單用法示例

    這篇文章主要介紹了Java Swing組件文件選擇器JFileChooser簡(jiǎn)單用法,結(jié)合實(shí)例形式分析了Swing組件中的文件選擇器JFileChooser的簡(jiǎn)單使用方法,需要的朋友可以參考下
    2017-11-11
  • SpringBoot如何根據(jù)用戶系統(tǒng)時(shí)區(qū)動(dòng)態(tài)展示時(shí)間

    SpringBoot如何根據(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-01
  • MyBatis批量添加數(shù)據(jù)2種實(shí)現(xiàn)方法

    MyBatis批量添加數(shù)據(jù)2種實(shí)現(xiàn)方法

    這篇文章主要介紹了MyBatis批量添加數(shù)據(jù)2種實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • SpringBoot使用 druid 連接池來優(yōu)化分頁(yè)語(yǔ)句

    SpringBoot使用 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í)例詳解

    動(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
  • jdk1.8的環(huán)境配置過程

    jdk1.8的環(huán)境配置過程

    Java平臺(tái)由Java虛擬機(jī)和Java應(yīng)用程序接口搭建,Java語(yǔ)言則是進(jìn)入這個(gè)平臺(tái)的通道,用Java語(yǔ)言編寫并編譯的程序可以運(yùn)行在這個(gè)平臺(tái)上,本文給大家講解jdk1.8的環(huán)境配置過程,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • java8 streamList轉(zhuǎn)換使用詳解

    java8 streamList轉(zhuǎn)換使用詳解

    這篇文章主要介紹了java8 streamList轉(zhuǎn)換使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 基于OpenCV與JVM實(shí)現(xiàn)矩陣處理圖像

    基于OpenCV與JVM實(shí)現(xiàn)矩陣處理圖像

    本文主要介紹了Java圖像處理實(shí)戰(zhàn)之基于OpenCV與JVM實(shí)現(xiàn)矩陣處理圖像。文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)圖像處理有一定的幫助,感興趣的可以試一試
    2022-01-01
  • Java單例模式的知識(shí)點(diǎn)詳解

    Java單例模式的知識(shí)點(diǎn)詳解

    在本篇文章里小編給大家整理的是關(guān)于Java單例模式的知識(shí)點(diǎn)詳解,有興趣的朋友們可以學(xué)習(xí)參考下。
    2020-02-02

最新評(píng)論