激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - Spring Boot中使用Spring-data-jpa的配置方法詳解

Spring Boot中使用Spring-data-jpa的配置方法詳解

2021-07-20 16:33小飛俠-2 Java教程

今天小編就為大家分享一篇關于Spring Boot中使用Spring-data-jpa的配置方法詳解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

為了解決這些大量枯燥的數據操作語句,我們第一個想到的是使用orm框架,比如:hibernate。通過整合hibernate之后,我們以操作java實體的方式最終將數據改變映射到數據庫表中。

為了解決抽象各個java實體基本的“增刪改查”操作,我們通常會以泛型的方式封裝一個模板dao來進行抽象簡化,但是這樣依然不是很方便,我們需要針對每個實體編寫一個繼承自泛型模板dao的接口,再編寫該接口的實現。雖然一些基礎的數據訪問已經可以得到很好的復用,但是在代碼結構上針對每個實體都會有一堆dao的接口和實現。

由于模板dao的實現,使得這些具體實體的dao層已經變的非常“薄”,有一些具體實體的dao實現可能完全就是對模板dao的簡單代理,并且往往這樣的實現類可能會出現在很多實體上。spring-data-jpa的出現正可以讓這樣一個已經很“薄”的數據訪問層變成只是一層接口的編寫方式。比如,下面的例子:

?
1
2
3
4
5
public interface userrepository extends jparepository<user, long> {
  user findbyname(string name);
  @query("from user u where u.name=:name")
  user finduser(@param("name") string name);
}

我們只需要通過編寫一個繼承自jparepository的接口就能完成數據訪問,下面以一個具體實例來體驗spring-data-jpa給我們帶來的強大功能。

使用示例

由于spring-data-jpa依賴于hibernate。如果您對hibernate有一定了解,下面內容可以毫不費力的看懂并上手使用spring-data-jpa。如果您還是hibernate新手,您可以先按如下方式入門,再建議回頭學習一下hibernate以幫助這部分的理解和進一步使用。

工程配置

pom.xml中添加相關依賴,加入以下內容:

?
1
2
3
4
<dependency
  <groupid>org.springframework.boot</groupid>
  <artifactid>spring-boot-starter-data-jpa</artifactid>
</dependency>

application.xml中配置:數據庫連接信息(如使用嵌入式數據庫則不需要)、自動創建表結構的設置,例如使用mysql的情況如下:

?
1
2
3
4
5
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.driver
spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop

spring.jpa.properties.hibernate.hbm2ddl.auto是hibernate的配置屬性,其主要作用是:自動創建、更新、驗證數據庫表結構。該參數的幾種配置如下:

  • create:每次加載hibernate時都會刪除上一次的生成的表,然后根據你的model類再重新來生成新表,哪怕兩次沒有任何改變也要這樣執行,這就是導致數據庫表數據丟失的一個重要原因。
  • create-drop:每次加載hibernate時根據model類生成表,但是sessionfactory一關閉,表就自動刪除。
  • update:最常用的屬性,第一次加載hibernate時根據model類會自動建立起表的結構(前提是先建立好數據庫),以后加載hibernate時根據model類自動更新表結構,即使表結構改變了但表中的行仍然存在不會刪除以前的行。要注意的是當部署到服務器后,表結構是不會被馬上建立起來的,是要等應用第一次運行起來后才會。
  • validate:每次加載hibernate時,驗證創建數據庫表結構,只會和數據庫中的表進行比較,不會創建新表,但是會插入新值。

至此已經完成基礎配置,如果您有在spring下整合使用過它的話,相信你已經感受到spring boot的便利之處:jpa的傳統配置在persistence.xml文件中,但是這里我們不需要。當然,最好在構建項目時候按照之前提過的最佳實踐的工程結構來組織,這樣以確保各種配置都能被框架掃描到。

創建實體

創建一個user實體,包含id(主鍵)、name(姓名)、age(年齡)屬性,通過orm框架其會被映射到數據庫表中,由于配置了hibernate.hbm2ddl.auto,在應用啟動的時候框架會自動去數據庫中創建對應的表。

?
1
2
3
4
5
6
7
8
9
10
11
12
@entity
public class user {
  @id
  @generatedvalue
  private long id;
  @column(nullable = false)
  private string name;
  @column(nullable = false)
  private integer age;
  // 省略構造函數
  // 省略getter和setter
}

創建數據訪問接口

下面針對user實體創建對應的repository接口實現對該實體的數據訪問,如下代碼:

?
1
2
3
4
5
6
public interface userrepository extends jparepository<user, long> {
  user findbyname(string name);
  user findbynameandage(string name, integer age);
  @query("from user u where u.name=:name")
  user finduser(@param("name") string name);
}

在spring-data-jpa中,只需要編寫類似上面這樣的接口就可實現數據訪問。不再像我們以往編寫了接口時候還需要自己編寫接口實現類,直接減少了我們的文件清單。

下面對上面的userrepository做一些解釋,該接口繼承自jparepository,通過查看jparepository接口的api文檔,可以看到該接口本身已經實現了創建(save)、更新(save)、刪除(delete)、查詢(findall、findone)等基本操作的函數,因此對于這些基礎操作的數據訪問就不需要開發者再自己定義。

在我們實際開發中,jparepository接口定義的接口往往還不夠或者性能不夠優化,我們需要進一步實現更復雜一些的查詢或操作。由于本文重點在spring boot中整合spring-data-jpa,在這里先拋磚引玉簡單介紹一下spring-data-jpa中讓我們興奮的功能,后續再單獨開篇講一下spring-data-jpa中的常見使用。

在上例中,我們可以看到下面兩個函數:

  • user findbyname(string name)
  • user findbynameandage(string name, integer age)

它們分別實現了按name查詢user實體和按name和age查詢user實體,可以看到我們這里沒有任何類sql語句就完成了兩個條件查詢方法。這就是spring-data-jpa的一大特性:通過解析方法名創建查詢。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

原文鏈接:https://blog.csdn.net/qq_26562641/article/details/71191948

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 在线成人一区二区 | 双性精h调教灌尿打屁股的文案 | 国产二区三区视频 | 亚洲最大av网站 | freexxx69性欧美hd | 国产亚洲精品综合一区91 | 国产成人77亚洲精品www | 一级毛片免费观看 | 国产日韩一区二区三区在线观看 | 久久久久一区二区三区四区五区 | 国产一级毛片高清视频 | 伊人在线 | 欧美一级美国一级 | 91一区二区三区久久久久国产乱 | 免费国产网站 | 国产精品久久久久久久久久了 | 99久久久精品免费观看国产 | 欧美级毛片 | 成人免费看视频 | 99在线精品视频免费观看20 | 羞羞视频免费观看网站 | 国产精品爱久久久久久久 | 日韩黄网站 | 午夜丰满少妇高清毛片1000部 | 一区二区三区日韩电影 | 亚洲午夜久久久精品一区二区三区 | 91精品国产92久久久久 | 极品国产91在线网站 | 永久免费不卡在线观看黄网站 | 毛片毛片免费看 | 亚洲va久久久噜噜噜久久男同 | 成人免费福利视频 | 91免费大全 | 免费在线观看成人av | 国产免费视频在线 | 国产精品亚洲三区 | 国产九色在线播放九色 | 国产毛片aaa一区二区三区视频 | av色先锋| 国产成人高潮免费观看精品 | 毛片网站网址 |