stone2083

          Spring Data JPA 簡(jiǎn)單介紹

          背景
          考慮到公司應(yīng)用中數(shù)據(jù)庫(kù)訪問(wèn)的多樣性和復(fù)雜性,目前正在開(kāi)發(fā)UDSL(統(tǒng)一數(shù)據(jù)訪問(wèn)層),開(kāi)發(fā)到一半的時(shí)候,偶遇SpringData工程。發(fā)現(xiàn)兩者的思路驚人的一致。
          于是就花了點(diǎn)時(shí)間了解SpringData,可能UDSL II期會(huì)基于SpringData做擴(kuò)展

          SpringData相關(guān)資料
          介紹:針對(duì)關(guān)系型數(shù)據(jù)庫(kù),KV數(shù)據(jù)庫(kù),Document數(shù)據(jù)庫(kù),Graph數(shù)據(jù)庫(kù),Map-Reduce等一些主流數(shù)據(jù)庫(kù),采用統(tǒng)一技術(shù)進(jìn)行訪問(wèn),并且盡可能簡(jiǎn)化訪問(wèn)手段。
          目前已支持的數(shù)據(jù)庫(kù)有(主要):MongoDB,Neo4j,Redis,Hadoop,JPA等

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

          Spring-Data-Jpa簡(jiǎn)介
          Spring Data Jpa 極大簡(jiǎn)化了數(shù)據(jù)庫(kù)訪問(wèn)層代碼,只要3步,就能搞定一切
          1. 編寫Entity類,依照J(rèn)PA規(guī)范,定義實(shí)體
          2. 編寫Repository接口,依靠SpringData規(guī)范,定義數(shù)據(jù)訪問(wèn)接口(注意,只要接口,不需要任何實(shí)現(xiàn))
          3. 寫一小陀配置文件 (Spring Scheme配置方式極大地簡(jiǎn)化了配置方式)

          下面,我依賴Example中的例子,簡(jiǎn)單地介紹下以上幾個(gè)步驟
          User.java
          User.java
          沒(méi)什么技術(shù),JPA規(guī)范要求怎么寫,它就怎么寫

          Repository.java
          SimpleUserRepository.java
          需要關(guān)注它繼承的接口,我簡(jiǎn)單介紹幾個(gè)核心接口
          Repository: 僅僅是一個(gè)標(biāo)識(shí),表明任何繼承它的均為倉(cāng)庫(kù)接口類,方便Spring自動(dòng)掃描識(shí)別
          CrudRepository: 繼承Repository,實(shí)現(xiàn)了一組CRUD相關(guān)的方法
          PagingAndSortingRepository: 繼承CrudRepository,實(shí)現(xiàn)了一組分頁(yè)排序相關(guān)的方法
          JpaRepository: 繼承PagingAndSortingRepository,實(shí)現(xiàn)一組JPA規(guī)范相關(guān)的方法
          JpaSpecificationExecutor: 比較特殊,不屬于Repository體系,實(shí)現(xiàn)一組JPA Criteria查詢相關(guān)的方法

          不需要寫任何實(shí)現(xiàn)類,Spring Data Jpa框架幫你搞定這一切。

          Spring Configuration
          Configuration.xml

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

          至此,大功告成,即可運(yùn)行
          Sample.java

          其中,寫操作相對(duì)比較簡(jiǎn)單,我不做詳細(xì)介紹,針對(duì)讀操作,我稍微描述下:
          Method Query: 方法級(jí)別的查詢,針對(duì)
          findByfindreadByreadgetBy等前綴的方法,解析方法字符串,生成查詢語(yǔ)句,其中支持的關(guān)鍵詞有:


          Named Query: 針對(duì)一些復(fù)雜的SQL,支持原生SQL方式,進(jìn)行查詢,保證性能
          Criteria Query: 支持JPA標(biāo)準(zhǔn)中的Criteria Query

          備注:
          本文只是簡(jiǎn)單介紹SpringDataJpa功能,要深入了解的同學(xué),建議直接傳送到官方網(wǎng)站

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

          Feedback

          # re: Spring Data JPA 簡(jiǎn)單介紹 2011-08-25 16:35 rox

          看到了Groovy的影子,非常不錯(cuò)。謝謝推薦!  回復(fù)  更多評(píng)論   

          # re: Spring Data JPA 簡(jiǎn)單介紹 2011-08-25 16:41 stone2083

          @rox
          在使用上確實(shí)有一些動(dòng)態(tài)腳本語(yǔ)言的影子,非常快捷。
          但是它最大的優(yōu)勢(shì)還在于集成了不同數(shù)據(jù)源。像Relation Database,Document Store,KV Store,Hadoop。  回復(fù)  更多評(píng)論   

          # re: Spring Data JPA 簡(jiǎn)單介紹 2011-08-27 22:38 buru

          不錯(cuò),轉(zhuǎn)載一下,我試過(guò)SpringData的mongodb包,有空也寫一篇  回復(fù)  更多評(píng)論   

          # re: Spring Data JPA 簡(jiǎn)單介紹 2011-08-28 23:02 help

          請(qǐng)教一下
          “根據(jù)findBy方法字符串,生成查詢語(yǔ)句”這個(gè)是怎么實(shí)現(xiàn)的啊,看了代碼也沒(méi)找到,還是不明白 望答復(fù) 謝謝
            回復(fù)  更多評(píng)論   

          # re: Spring Data JPA 簡(jiǎn)單介紹 2011-08-29 11:27 stone2083

          @help
          請(qǐng)跟蹤Bean初始化過(guò)程
          1. QueryExecutorMethodInterceptor#QueryExecutorMethodInterceptor()
          2. CreateIfNotFoundQueryLookupStrategy#resolveQuery()
          Method Query不是具體查詢方法,交由CreateQueryLookupStrategy動(dòng)態(tài)創(chuàng)建查詢方法
          3. PartTreeJpaQuery進(jìn)行具體處理,SQL Build見(jiàn)PartTree#buildTree()  回復(fù)  更多評(píng)論   

          # re: Spring Data JPA 簡(jiǎn)單介紹 2011-10-23 10:15 diecui1202

          淺顯易懂,學(xué)習(xí)了~  回復(fù)  更多評(píng)論   

          # re: Spring Data JPA 簡(jiǎn)單介紹 2011-10-24 09:51 stone2083

          @diecui1202
          什么時(shí)候換成自己的空間了?逛了一下,居然還沒(méi)有技術(shù)文章。  回復(fù)  更多評(píng)論   

          # re: Spring Data JPA 簡(jiǎn)單介紹 2014-04-22 22:44 最代碼

          Spring Data JPA 1.4.3 RELEASE 中文文檔地址 http://www.zuidaima.com/share/1612462714375168.htm  回復(fù)  更多評(píng)論   

          # re: Spring Data JPA 簡(jiǎn)單介紹 2014-04-23 12:49 stone2083

          @最代碼
          不錯(cuò)  回復(fù)  更多評(píng)論   

          # re: Spring Data JPA 簡(jiǎn)單介紹 2014-04-23 13:32 最代碼

          @stone2083
          多謝  回復(fù)  更多評(píng)論   

          # re: Spring Data JPA 簡(jiǎn)單介紹 2014-11-18 09:59 xhb

          @help
          直接在respository里定義接口,接口定義規(guī)則如表格所示:findBy開(kāi)頭后面跟查詢條件,如:findByUsername jpa會(huì)自動(dòng)實(shí)現(xiàn)select u from User u where u.username=?這樣的查詢語(yǔ)句,在service層無(wú)需實(shí)現(xiàn),只需要調(diào)用就好了  回復(fù)  更多評(píng)論   

          # re: Spring Data JPA 簡(jiǎn)單介紹 2015-02-13 23:31 zuidaima

          springdata demo教程源代碼下載:http://zuidaima.com/share/kspringdata-p1-s1.htm  回復(fù)  更多評(píng)論   

          My Links

          Blog Stats

          常用鏈接

          留言簿(9)

          隨筆分類(94)

          隨筆檔案(93)

          tech

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 阜新| 合肥市| 麻江县| 大安市| 五台县| 城市| 翁牛特旗| 华阴市| SHOW| 高淳县| 华安县| 铅山县| 汶上县| 寿光市| 松阳县| 永春县| 庆安县| 鹰潭市| 鄱阳县| 灌阳县| 鱼台县| 卫辉市| 汾西县| 荃湾区| 新密市| 乌兰浩特市| 舞钢市| 阿合奇县| 大荔县| 哈尔滨市| 镇原县| 荣成市| 子洲县| 凤城市| 沅江市| 平塘县| 吉林市| 黑山县| 获嘉县| 宿州市| 鄢陵县|