爲了解決抽象各個Java實體基本的「增刪改查」操做,咱們一般會以泛型的方式封裝一個模板Dao來進行抽象簡化,可是這樣依然不是很方便,咱們須要針對每一個實體編寫一個繼承自泛型模板Dao的接口,再編寫該接口的實現。雖然一些基礎的數據訪問已經能夠獲得很好的複用,可是在代碼結構上針對每一個實體都會有一堆Dao的接口和實現。java
因爲模板Dao的實現,使得這些具體實體的Dao層已經變的很是「薄」,有一些具體實體的Dao實現可能徹底就是對模板Dao的簡單代理,而且每每這樣的實現類可能會出如今不少實體上。spring-data-jpa的出現正可讓這樣一個已經很「薄」的數據訪問層變成只是一層接口的編寫方式spring
咱們只須要經過編寫一個繼承自JpaRepository
的接口就能完成數據訪問,下面以一個具體實例來體驗Spring-data-jpa給咱們帶來的強大功能。數據庫
工程配置:服務器
spring.jpa.properties.hibernate.hbm2ddl.auto
是hibernate的配置屬性,其主要做用是:自動建立、更新、驗證數據庫表結構。該參數的幾種配置以下:session
create
:每次加載hibernate時都會刪除上一次的生成的表,而後根據你的model類再從新來生成新表,哪怕兩次沒有任何改變也要這樣執行,這就是致使數據庫表數據丟失的一個重要緣由。create-drop
:每次加載hibernate時根據model類生成表,可是sessionFactory一關閉,表就自動刪除。update
:最經常使用的屬性,第一次加載hibernate時根據model類會自動創建起表的結構(前提是先創建好數據庫),之後加載hibernate時根據model類自動更新表結構,即便表結構改變了但表中的行仍然存在不會刪除之前的行。要注意的是當部署到服務器後,表結構是不會被立刻創建起來的,是要等應用第一次運行起來後纔會。validate
:每次加載hibernate時,驗證建立數據庫表結構,只會和數據庫中的表進行比較,不會建立新表,可是會插入新值。至此已經完成基礎配置,若是您有在Spring下整合使用過它的話,相信你已經感覺到Spring Boot的便利之處:JPA的傳統配置在persistence.xml
文件中,可是這裏咱們不須要。spa