如何在Spring Boot中使用Spring-data-jpa?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、威海網(wǎng)絡(luò)推廣、重慶小程序開(kāi)發(fā)公司、威海網(wǎng)絡(luò)營(yíng)銷、威海企業(yè)策劃、威海品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供威海建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:redsoil1982.com.cn
使用示例
由于Spring-data-jpa依賴于Hibernate。如果您對(duì)Hibernate有一定了解,下面內(nèi)容可以毫不費(fèi)力的看懂并上手使用Spring-data-jpa。如果您還是Hibernate新手,您可以先按如下方式入門,再建議回頭學(xué)習(xí)一下Hibernate以幫助這部分的理解和進(jìn)一步使用。
工程配置
在pom.xml
中添加相關(guān)依賴,加入以下內(nèi)容:
<dependency <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
在application.xml
中配置:數(shù)據(jù)庫(kù)連接信息(如使用嵌入式數(shù)據(jù)庫(kù)則不需要)、自動(dòng)創(chuàng)建表結(jié)構(gòu)的設(shè)置,例如使用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.Driver spring.jpa.properties.hibernate.hbm2ddl.auto=create-drop
spring.jpa.properties.hibernate.hbm2ddl.auto
是hibernate的配置屬性,其主要作用是:自動(dòng)創(chuàng)建、更新、驗(yàn)證數(shù)據(jù)庫(kù)表結(jié)構(gòu)。該參數(shù)的幾種配置如下:
create
:每次加載hibernate時(shí)都會(huì)刪除上一次的生成的表,然后根據(jù)你的model類再重新來(lái)生成新表,哪怕兩次沒(méi)有任何改變也要這樣執(zhí)行,這就是導(dǎo)致數(shù)據(jù)庫(kù)表數(shù)據(jù)丟失的一個(gè)重要原因。
create-drop
:每次加載hibernate時(shí)根據(jù)model類生成表,但是sessionFactory一關(guān)閉,表就自動(dòng)刪除。
update
:最常用的屬性,第一次加載hibernate時(shí)根據(jù)model類會(huì)自動(dòng)建立起表的結(jié)構(gòu)(前提是先建立好數(shù)據(jù)庫(kù)),以后加載hibernate時(shí)根據(jù)model類自動(dòng)更新表結(jié)構(gòu),即使表結(jié)構(gòu)改變了但表中的行仍然存在不會(huì)刪除以前的行。要注意的是當(dāng)部署到服務(wù)器后,表結(jié)構(gòu)是不會(huì)被馬上建立起來(lái)的,是要等應(yīng)用第一次運(yùn)行起來(lái)后才會(huì)。
validate
:每次加載hibernate時(shí),驗(yàn)證創(chuàng)建數(shù)據(jù)庫(kù)表結(jié)構(gòu),只會(huì)和數(shù)據(jù)庫(kù)中的表進(jìn)行比較,不會(huì)創(chuàng)建新表,但是會(huì)插入新值。
至此已經(jīng)完成基礎(chǔ)配置,如果您有在Spring下整合使用過(guò)它的話,相信你已經(jīng)感受到Spring Boot的便利之處:JPA的傳統(tǒng)配置在persistence.xml
文件中,但是這里我們不需要。當(dāng)然,最好在構(gòu)建項(xiàng)目時(shí)候按照之前提過(guò)的最佳實(shí)踐的工程結(jié)構(gòu)來(lái)組織,這樣以確保各種配置都能被框架掃描到。
創(chuàng)建實(shí)體
創(chuàng)建一個(gè)User實(shí)體,包含id(主鍵)、name(姓名)、age(年齡)屬性,通過(guò)ORM框架其會(huì)被映射到數(shù)據(jù)庫(kù)表中,由于配置了hibernate.hbm2ddl.auto
,在應(yīng)用啟動(dòng)的時(shí)候框架會(huì)自動(dòng)去數(shù)據(jù)庫(kù)中創(chuàng)建對(duì)應(yīng)的表。
@Entity public class User { @Id @GeneratedValue private Long id; @Column(nullable = false) private String name; @Column(nullable = false) private Integer age; // 省略構(gòu)造函數(shù) // 省略getter和setter }
創(chuàng)建數(shù)據(jù)訪問(wèn)接口
下面針對(duì)User實(shí)體創(chuàng)建對(duì)應(yīng)的Repository
接口實(shí)現(xiàn)對(duì)該實(shí)體的數(shù)據(jù)訪問(wèn),如下代碼:
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中,只需要編寫類似上面這樣的接口就可實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)。不再像我們以往編寫了接口時(shí)候還需要自己編寫接口實(shí)現(xiàn)類,直接減少了我們的文件清單。
下面對(duì)上面的UserRepository
做一些解釋,該接口繼承自JpaRepository
,通過(guò)查看JpaRepository
接口的API文檔,可以看到該接口本身已經(jīng)實(shí)現(xiàn)了創(chuàng)建(save)、更新(save)、刪除(delete)、查詢(findAll、findOne)等基本操作的函數(shù),因此對(duì)于這些基礎(chǔ)操作的數(shù)據(jù)訪問(wèn)就不需要開(kāi)發(fā)者再自己定義。
在我們實(shí)際開(kāi)發(fā)中,JpaRepository
接口定義的接口往往還不夠或者性能不夠優(yōu)化,我們需要進(jìn)一步實(shí)現(xiàn)更復(fù)雜一些的查詢或操作。由于本文重點(diǎn)在spring boot中整合spring-data-jpa,在這里先拋磚引玉簡(jiǎn)單介紹一下spring-data-jpa中讓我們興奮的功能,后續(xù)再單獨(dú)開(kāi)篇講一下spring-data-jpa中的常見(jiàn)使用。
在上例中,我們可以看到下面兩個(gè)函數(shù):
User findByName(String name)
User findByNameAndAge(String name, Integer age)
它們分別實(shí)現(xiàn)了按name查詢User實(shí)體和按name和age查詢User實(shí)體,可以看到我們這里沒(méi)有任何類SQL語(yǔ)句就完成了兩個(gè)條件查詢方法。這就是Spring-data-jpa的一大特性:通過(guò)解析方法名創(chuàng)建查詢。
springboot一種全新的編程規(guī)范,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程,SpringBoot也是一個(gè)服務(wù)于框架的框架,服務(wù)范圍是簡(jiǎn)化配置文件。
看完上述內(nèi)容,你們掌握如何在Spring Boot中使用Spring-data-jpa的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)站欄目:如何在SpringBoot中使用Spring-data-jpa
文章起源:http://redsoil1982.com.cn/article18/iepjgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、網(wǎng)站營(yíng)銷、網(wǎng)頁(yè)設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)