" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、 JPA概述

JPA的全稱是Java Persistence API, 即Java 持久化API,是SUN公司推出的一套基于ORM的規(guī)范,內(nèi)部是由一系列的接口和抽象類構(gòu)成。

JPA通過(guò)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:編寫(xiě)實(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...

注解說(shuō)明:

@Entity:聲明此類為實(shí)體類。

@Table(name="數(shù)據(jù)庫(kù)表名"):實(shí)體類和表的映射地址。

@Id:聲明當(dāng)前屬性為主鍵。

@GeneratedValue(strategy=GenerationType.*):配置主鍵的生成策略

  • TABLE:使用一個(gè)特定的數(shù)據(jù)庫(kù)表格來(lái)保存主鍵
  • SEQUENCE:根據(jù)底層數(shù)據(jù)庫(kù)的序列來(lái)生成主鍵,條件是數(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)建在主表),該屬性定義該列所在從表的名字搭建開(kāi)發(fā)環(huán)境[重點(diǎn)]

step3:編寫(xiě)配置文件屬性

yml文件:

數(shù)據(jù)庫(kù)配置:******

jpa:
? ? hibernate:
? ? ? ddl-auto: update
? ? show-sql: true

屬性說(shuō)明:

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編寫(xiě)符合Spring Data JPA規(guī)范的Dao層接口

Spring Data JPA是spring提供的一款對(duì)于數(shù)據(jù)訪問(wèn)層(Dao層)的框架,使用Spring Data JPA,只需要按照框架的規(guī)范提供dao接口,不需要實(shí)現(xiàn)類就可以完成數(shù)據(jù)庫(kù)的增刪改查、分頁(yè)查詢等方法的定義,極大的簡(jiǎn)化了我們的開(kāi)發(fā)過(guò)程。

在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> {
}

說(shuō)明:

  • JpaRepository:該接口為我們jpa提供了基本的簡(jiǎn)單的增刪改查方法。
  • JpaSpecificationExecutor:提供數(shù)據(jù)的復(fù)雜操作。

OK!現(xiàn)在我們就能對(duì)實(shí)體進(jìn)行的簡(jiǎn)單操作啦~

step4:編寫(xiě)測(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)文章

  • java實(shí)現(xiàn)幸運(yùn)抽獎(jiǎng)功能

    java實(shí)現(xiàn)幸運(yùn)抽獎(jiǎng)功能

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)幸運(yùn)抽獎(jiǎng)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 自己編寫(xiě)IOC控制反轉(zhuǎn)及AOP面向切面

    自己編寫(xiě)IOC控制反轉(zhuǎn)及AOP面向切面

    本文展示通過(guò)一個(gè)案例來(lái)自己手寫(xiě)IOC和AOP代碼,通過(guò)銀行轉(zhuǎn)賬案例詳細(xì)的代碼編寫(xiě)和文檔解釋來(lái)說(shuō)明IOC和AOP的思想,會(huì)分享存在的問(wèn)題和解決問(wèn)題的思路
    2021-06-06
  • Java版本和C++版本的二叉樹(shù)序列化與反序列化

    Java版本和C++版本的二叉樹(shù)序列化與反序列化

    這篇文章主要介紹了Java版本和C++版本的二叉樹(shù)序列化與反序列化,二叉樹(shù)就是節(jié)點(diǎn)在內(nèi)存區(qū)域中串聯(lián)起來(lái)的,但是如果掉電,內(nèi)存上的數(shù)據(jù)就沒(méi)有了。為了保存這種結(jié)構(gòu),將二叉樹(shù)用字符串的形式保存到硬盤(pán)中,這就是序列化;從字符串形式轉(zhuǎn)換為二叉樹(shù),這就是反序列化
    2022-06-06
  • MyBatis實(shí)現(xiàn)模糊查詢的幾種方式

    MyBatis實(shí)現(xiàn)模糊查詢的幾種方式

    這篇文章主要介紹了MyBatis實(shí)現(xiàn)模糊查詢的幾種方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • MyBatis官方代碼生成工具給力(解放雙手)

    MyBatis官方代碼生成工具給力(解放雙手)

    這篇文章主要介紹了MyBatis官方代碼生成工具給力(解放雙手),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 使用Java完成Socket文件傳輸方式

    使用Java完成Socket文件傳輸方式

    這篇文章主要介紹了使用Java完成Socket文件傳輸方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java把數(shù)字格式化為貨幣字符串實(shí)例代碼

    Java把數(shù)字格式化為貨幣字符串實(shí)例代碼

    這篇文章主要介紹了Java把數(shù)字格式化為貨幣字符串實(shí)例代碼,需要的朋友可以參考下
    2014-02-02
  • java實(shí)現(xiàn)歸并排序算法

    java實(shí)現(xiàn)歸并排序算法

    歸并排序:是建立在歸并操作上的一種有效的排序算法。該算法是采用分治法(Divide and Conquer)的一個(gè)非常典型的應(yīng)用。 本文我們就來(lái)詳細(xì)的探討下。
    2015-04-04
  • 解析Mybatis SqlSessionFactory初始化原理

    解析Mybatis SqlSessionFactory初始化原理

    本文主要介紹了Mybatis SqlSessionFactory初始化原理,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • SpringBoot實(shí)現(xiàn)devtools實(shí)現(xiàn)熱部署過(guò)程解析

    SpringBoot實(shí)現(xiàn)devtools實(shí)現(xiàn)熱部署過(guò)程解析

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)devtools實(shí)現(xiàn)熱部署過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論

延吉市| 安化县| 勐海县| 保定市| 江城| 木里| 长乐市| 双城市| 钟山县| 永仁县| 中西区| 棋牌| 韶山市| 汉阴县| 江阴市| 贵州省| 清丰县| 浪卡子县| 玛多县| 乃东县| 海原县| 香河县| 乌鲁木齐县| 巴东县| 山阴县| 涡阳县| 甘德县| 尼玛县| 万全县| 东平县| 甘谷县| 那坡县| 郴州市| 湖口县| 六枝特区| 丹东市| 察隅县| 库尔勒市| 托克逊县| 思茅市| 武功县|