亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

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

2024-07-14 08:43:49
字體:
來源:轉載
供稿:網友

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

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

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

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中添加相關依賴,加入以下內容:

<dependency   <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-data-jpa</artifactId></dependency>

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

spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.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,在應用啟動的時候框架會自動去數據庫中創建對應的表。

@Entitypublic class User {  @Id  @GeneratedValue  private Long id;  @Column(nullable = false)  private String name;  @Column(nullable = false)  private Integer age;  // 省略構造函數  // 省略getter和setter}

創建數據訪問接口

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

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的一大特性:通過解析方法名創建查詢。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线亚洲男人天堂| 久久精品国产免费观看| 精品动漫一区二区| 久久精品男人天堂| 92福利视频午夜1000合集在线观看| 亚洲欧美日韩爽爽影院| 成人观看高清在线观看免费| 中文字幕欧美日韩va免费视频| 久久国产视频网站| 亚洲欧美福利视频| 亚洲一二在线观看| 日韩中文字幕在线视频| 午夜免费在线观看精品视频| 亚洲伊人久久大香线蕉av| 亚洲免费影视第一页| 亚洲精品视频网上网址在线观看| 欧美xxxx做受欧美| …久久精品99久久香蕉国产| 亚洲在线一区二区| 日韩av片免费在线观看| 国产成人高潮免费观看精品| 韩剧1988免费观看全集| 亚洲一区二区三区乱码aⅴ| 日韩有码片在线观看| 亚洲欧美国产高清va在线播| 国产日韩一区在线| 欧美日韩加勒比精品一区| 久久久久国色av免费观看性色| 日韩在线www| 亚洲精品成人av| 日韩国产一区三区| 久久亚洲国产精品成人av秋霞| 久久人人爽人人爽人人片av高清| 午夜精品视频在线| www.午夜精品| 欧美xxxx做受欧美.88| 欧美亚洲成人精品| 成人免费看吃奶视频网站| 亚洲福利在线看| 日韩欧亚中文在线| 国产综合福利在线| 最近中文字幕日韩精品| 久久精品99久久久香蕉| 欧美在线激情网| 中文字幕精品av| 久久精品亚洲国产| 欧美激情一级欧美精品| 欧美国产第二页| 国产精品一香蕉国产线看观看| 日本成人黄色片| 国产精品美女免费看| 国产精品久久久久久久久久免费| 美女性感视频久久久| 久久久久久久久久久亚洲| 久久久亚洲成人| 51色欧美片视频在线观看| 成人黄色大片在线免费观看| 国产精品成人在线| 最新国产精品拍自在线播放| 久久99久久99精品中文字幕| 国产成人精品999| 午夜精品久久久久久久99热| 久99九色视频在线观看| 久久天天躁狠狠躁夜夜av| 成人免费大片黄在线播放| 国产乱肥老妇国产一区二| 欧美午夜影院在线视频| 国产精品aaaa| 欧美日韩黄色大片| 激情av一区二区| 久久亚洲影音av资源网| 国产精品ⅴa在线观看h| 亚州欧美日韩中文视频| 国产99久久精品一区二区 夜夜躁日日躁| 深夜成人在线观看| 欧美大成色www永久网站婷| 久久精品电影一区二区| 在线视频日本亚洲性| 欧美在线免费观看| 国产精品成人免费视频| 不卡伊人av在线播放| 97国产一区二区精品久久呦| 久久精品国产综合| 欧美天天综合色影久久精品| 午夜精品久久久久久久男人的天堂| 亚洲激情自拍图| 91久久精品国产| 欧美电影《睫毛膏》| 国产综合视频在线观看| 97香蕉久久超级碰碰高清版| 国产精品激情av电影在线观看| 欧美成人午夜激情| 亚洲成av人片在线观看香蕉| 亚洲色图欧美制服丝袜另类第一页| 欧美国产日本高清在线| 日日狠狠久久偷偷四色综合免费| 亚洲欧美日韩中文视频| 国产亚洲精品美女久久久| 国产成人综合久久| 国产日韩在线一区| 日韩av电影国产| 久久伊人精品一区二区三区| 欧美激情在线观看视频| 日韩av男人的天堂| 亚洲电影免费观看高清完整版在线观看| 91精品在线影院| 亚洲成人网在线观看| 中文字幕欧美日韩在线| 亚洲精品美女在线观看播放| 亚洲精品网站在线播放gif| 久久久久久久久网站| 久久久亚洲精品视频| 国产精品久久久久久网站| 精品夜色国产国偷在线| 欧美成人免费在线视频| 久久久免费高清电视剧观看| 国产成人自拍视频在线观看| 日韩中文字幕在线看| 欧美日韩在线另类| 最新国产精品拍自在线播放| 欧美日韩中国免费专区在线看| 韩国三级日本三级少妇99| 欧美高清视频在线| 色偷偷噜噜噜亚洲男人| 91国内揄拍国内精品对白| 欧美亚洲在线观看| 日本精品免费一区二区三区| 欧美激情亚洲精品| 精品国产乱码久久久久久天美| 亚洲成人黄色在线观看| 欧美伦理91i| 国产69精品99久久久久久宅男| 亚洲人午夜精品免费| 久久精品国产欧美亚洲人人爽| 丰满岳妇乱一区二区三区| 亚洲精品理论电影| 日韩av在线免费观看| 97久久精品人搡人人玩| 国产精品爽爽ⅴa在线观看| 91久久久久久久一区二区| 亚洲第一福利视频| 国产91精品久久久| 亚洲激情电影中文字幕| 欧美日韩中文字幕在线| 亚洲aa中文字幕| 国产精品免费电影| 色噜噜狠狠狠综合曰曰曰88av| 日本一本a高清免费不卡| 中国china体内裑精亚洲片| 国产福利精品av综合导导航| 久久99久久久久久久噜噜| 亚洲精品98久久久久久中文字幕| 91久久久久久久久久久久久| 欧美精品制服第一页| 伊人成人开心激情综合网| 国产日产欧美精品| 欧美色欧美亚洲高清在线视频| 羞羞色国产精品| 成人xvideos免费视频| 亚洲国产精品久久91精品| 久久精品亚洲94久久精品| 欧美成年人视频网站| 91久久久亚洲精品| 午夜剧场成人观在线视频免费观看|