<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    stone2083

    Spring Data JPA 簡單介紹

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

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

    SpringData官方資料(強(qiáng)烈推薦,文檔非常詳細(xì))
    SpringData主頁: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簡介
    Spring Data Jpa 極大簡化了數(shù)據(jù)庫訪問層代碼,只要3步,就能搞定一切
    1. 編寫Entity類,依照J(rèn)PA規(guī)范,定義實(shí)體
    2. 編寫Repository接口,依靠SpringData規(guī)范,定義數(shù)據(jù)訪問接口(注意,只要接口,不需要任何實(shí)現(xiàn))
    3. 寫一小陀配置文件 (Spring Scheme配置方式極大地簡化了配置方式)

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

    Repository.java
    SimpleUserRepository.java
    需要關(guān)注它繼承的接口,我簡單介紹幾個(gè)核心接口
    Repository: 僅僅是一個(gè)標(biāo)識,表明任何繼承它的均為倉庫接口類,方便Spring自動(dòng)掃描識別
    CrudRepository: 繼承Repository,實(shí)現(xiàn)了一組CRUD相關(guān)的方法
    PagingAndSortingRepository: 繼承CrudRepository,實(shí)現(xiàn)了一組分頁排序相關(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

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


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

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

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

    Feedback

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    主站蜘蛛池模板: 丰满人妻一区二区三区免费视频 | 四虎影院免费在线播放| 69影院毛片免费观看视频在线| 免费A级毛片无码视频| 精品久久久久久久免费人妻 | 免费国产黄网站在线看| 成在人线av无码免费高潮喷水 | 中文字幕在线日亚洲9| 亚洲女久久久噜噜噜熟女| 免费看美女让人桶尿口| 免费福利在线播放| 久久精品国产亚洲精品2020| 免费成人在线观看| 成人超污免费网站在线看| 亚洲视频免费在线观看| 成人一区二区免费视频| 成人a毛片视频免费看| 亚洲av永久无码| 99亚偷拍自图区亚洲| 亚洲国产超清无码专区| 亚洲综合精品一二三区在线| 亚洲精品无码久久久久去q| 亚洲人成国产精品无码| 国产乱色精品成人免费视频 | 亚洲另类无码专区首页| 亚洲免费网站在线观看| 亚洲成人午夜在线| 亚洲阿v天堂在线| 亚洲av网址在线观看| 亚洲∧v久久久无码精品 | 久久一本岛在免费线观看2020| 你是我的城池营垒免费观看完整版 | 亚洲AV无码无限在线观看不卡| 亚洲国产一区在线观看| 亚洲国产精品综合一区在线| 久久精品国产亚洲AV电影| 亚洲午夜久久久精品电影院| 久久久久精品国产亚洲AV无码| 亚洲av片不卡无码久久| 亚洲中文精品久久久久久不卡| 亚洲AV无码一区二区三区网址|