stone2083

          Spring Data JPA 簡單介紹

          背景
          考慮到公司應用中數據庫訪問的多樣性和復雜性,目前正在開發UDSL(統一數據訪問層),開發到一半的時候,偶遇SpringData工程。發現兩者的思路驚人的一致。
          于是就花了點時間了解SpringData,可能UDSL II期會基于SpringData做擴展

          SpringData相關資料
          介紹:針對關系型數據庫,KV數據庫,Document數據庫,Graph數據庫,Map-Reduce等一些主流數據庫,采用統一技術進行訪問,并且盡可能簡化訪問手段。
          目前已支持的數據庫有(主要):MongoDB,Neo4j,Redis,Hadoop,JPA等

          SpringData官方資料(強烈推薦,文檔非常詳細)
          SpringData主頁:http://www.springsource.org/spring-data
          SpringDataJPA 指南文檔:http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/ (非常詳細)
          SpringDataJPA Examples: https://github.com/SpringSource/spring-data-jpa-examples (非常詳細的例子)

          Spring-Data-Jpa簡介
          Spring Data Jpa 極大簡化了數據庫訪問層代碼,只要3步,就能搞定一切
          1. 編寫Entity類,依照JPA規范,定義實體
          2. 編寫Repository接口,依靠SpringData規范,定義數據訪問接口(注意,只要接口,不需要任何實現)
          3. 寫一小陀配置文件 (Spring Scheme配置方式極大地簡化了配置方式)

          下面,我依賴Example中的例子,簡單地介紹下以上幾個步驟
          User.java
          User.java
          沒什么技術,JPA規范要求怎么寫,它就怎么寫

          Repository.java
          SimpleUserRepository.java
          需要關注它繼承的接口,我簡單介紹幾個核心接口
          Repository: 僅僅是一個標識,表明任何繼承它的均為倉庫接口類,方便Spring自動掃描識別
          CrudRepository: 繼承Repository,實現了一組CRUD相關的方法
          PagingAndSortingRepository: 繼承CrudRepository,實現了一組分頁排序相關的方法
          JpaRepository: 繼承PagingAndSortingRepository,實現一組JPA規范相關的方法
          JpaSpecificationExecutor: 比較特殊,不屬于Repository體系,實現一組JPA Criteria查詢相關的方法

          不需要寫任何實現類,Spring Data Jpa框架幫你搞定這一切。

          Spring Configuration
          Configuration.xml

          核心代碼只要配置一行:<jpa:repositories base-package="org.springframework.data.jpa.example.repository.simple" />即可。上面的僅僅是數據源,事務的配置而已。

          至此,大功告成,即可運行
          Sample.java

          其中,寫操作相對比較簡單,我不做詳細介紹,針對讀操作,我稍微描述下:
          Method Query: 方法級別的查詢,針對
          findByfindreadByreadgetBy等前綴的方法,解析方法字符串,生成查詢語句,其中支持的關鍵詞有:


          Named Query: 針對一些復雜的SQL,支持原生SQL方式,進行查詢,保證性能
          Criteria Query: 支持JPA標準中的Criteria Query

          備注:
          本文只是簡單介紹SpringDataJpa功能,要深入了解的同學,建議直接傳送到官方網站

          posted on 2011-08-25 15:18 stone2083 閱讀(19906) 評論(12)  編輯  收藏 所屬分類: java

          Feedback

          # re: Spring Data JPA 簡單介紹 2011-08-25 16:35 rox

          看到了Groovy的影子,非常不錯。謝謝推薦!  回復  更多評論   

          # re: Spring Data JPA 簡單介紹 2011-08-25 16:41 stone2083

          @rox
          在使用上確實有一些動態腳本語言的影子,非??旖?。
          但是它最大的優勢還在于集成了不同數據源。像Relation Database,Document Store,KV Store,Hadoop。  回復  更多評論   

          # re: Spring Data JPA 簡單介紹 2011-08-27 22:38 buru

          不錯,轉載一下,我試過SpringData的mongodb包,有空也寫一篇  回復  更多評論   

          # re: Spring Data JPA 簡單介紹 2011-08-28 23:02 help

          請教一下
          “根據findBy方法字符串,生成查詢語句”這個是怎么實現的啊,看了代碼也沒找到,還是不明白 望答復 謝謝
            回復  更多評論   

          # re: Spring Data JPA 簡單介紹 2011-08-29 11:27 stone2083

          @help
          請跟蹤Bean初始化過程
          1. QueryExecutorMethodInterceptor#QueryExecutorMethodInterceptor()
          2. CreateIfNotFoundQueryLookupStrategy#resolveQuery()
          Method Query不是具體查詢方法,交由CreateQueryLookupStrategy動態創建查詢方法
          3. PartTreeJpaQuery進行具體處理,SQL Build見PartTree#buildTree()  回復  更多評論   

          # re: Spring Data JPA 簡單介紹 2011-10-23 10:15 diecui1202

          淺顯易懂,學習了~  回復  更多評論   

          # re: Spring Data JPA 簡單介紹 2011-10-24 09:51 stone2083

          @diecui1202
          什么時候換成自己的空間了?逛了一下,居然還沒有技術文章。  回復  更多評論   

          # re: Spring Data JPA 簡單介紹 2014-04-22 22:44 最代碼

          Spring Data JPA 1.4.3 RELEASE 中文文檔地址 http://www.zuidaima.com/share/1612462714375168.htm  回復  更多評論   

          # re: Spring Data JPA 簡單介紹 2014-04-23 12:49 stone2083

          @最代碼
          不錯  回復  更多評論   

          # re: Spring Data JPA 簡單介紹 2014-04-23 13:32 最代碼

          @stone2083
          多謝  回復  更多評論   

          # re: Spring Data JPA 簡單介紹 2014-11-18 09:59 xhb

          @help
          直接在respository里定義接口,接口定義規則如表格所示:findBy開頭后面跟查詢條件,如:findByUsername jpa會自動實現select u from User u where u.username=?這樣的查詢語句,在service層無需實現,只需要調用就好了  回復  更多評論   

          # re: Spring Data JPA 簡單介紹 2015-02-13 23:31 zuidaima

          springdata demo教程源代碼下載:http://zuidaima.com/share/kspringdata-p1-s1.htm  回復  更多評論   

          My Links

          Blog Stats

          常用鏈接

          留言簿(9)

          隨筆分類(94)

          隨筆檔案(93)

          tech

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 寿阳县| 安平县| 铁力市| 滦南县| 石首市| 大同市| 乐清市| 旺苍县| 体育| 庄河市| 台州市| 华宁县| 镇沅| 绥芬河市| 寻乌县| 信宜市| 麟游县| 固原市| 集安市| 招远市| 平和县| 通榆县| 栾城县| 本溪| 犍为县| 鹰潭市| 道真| 浪卡子县| 新宁县| 五大连池市| 巴彦县| 错那县| 南昌市| 漾濞| 安远县| 德江县| 桓仁| 读书| 滨海县| 巢湖市| 兴安县|