Spring Data實戰 Spring Data

[美]Mark Pollack Oliver Gierke Thomas Risberg Jon Brisbin Michael Hunger 著

  • Spring Data實戰-preview-1
Spring Data實戰-preview-1

商品描述

  數據訪問領域正在發生一場變革,關系型數據庫無法解決的問題需要新的數據訪問技術來解決。Spring Data項目就是一種簡化Java應用構建的數據訪問技術,它可以幫助開發人員高效地使用**新的數據處理和管理工具,同時還能夠以**新的方式使用傳統的數據庫。

  《Spring Data實戰》從Spring Data背景知識、關系型數據庫、NoSQL、快速應用開發、大數據、數據網格6個方面深度解析了數據訪問技術,介紹的內容都是**流行和前沿的,其中文檔數據庫、圖數據庫、鍵/值存儲、Hadoop以及GemFire數據結構等是**重要的內容。《Spring Data實戰》介紹了Spring Data、Repository、Querydsl的基礎理念,然後闡述了借助Spring Data如何簡化NoSQL和大數據的訪問,並且涵蓋了使用Spring Roo和Spring Data REST導出功能如何實現應用的快速開發,除此之外,書中還涉及與其他Spring子項目的協同工作,如Spring Integration和Spring Batch。

  《Spring Data實戰》面向實戰、結構清晰,示例豐富,適用於各類Java開發人員和數據庫開發人員,也可以作為各大、中專院校相關專業師生的參考用書和相關培訓機構的培訓教材。

作者簡介

Mark Pollack博士曾在布魯克黑文國家實驗室研究高能物理學方面的大數據解決方案,隨後轉移到金融服務領域擔任前端交易系統的技術領導和架構師。
他長期以來關注軟件開發流程的**佳實踐和改善,Mark從2003年就參與核心Spring(Java)的開發,並在2004年成立了Microsoft對應的項目也就是Spring.NET。 
Mark現在領導著Spring Data項目,在使用大數據和NoSQL數據庫這些新技術時,這個項目能夠簡化應用的開發。


Oliver Gierke是SpringSource的工程師,這是VMware 的一個子部門,目前他擔任Spring Data JPA、MongoDB以及核心模塊的領 導者。
他參與企業級應用和開源項目的開發已經超過了6年,其工作的關注點在軟件架構、Spring以及持久化技術方面。
他經常在德國以及一些國際會議上進行演講,寫過很多的技術文章。


Thomas Risberg目前是Spring Data團隊的成員,關注於MongoDB和JDBC擴展項目。
他也是Spring框架項目的提交者,主要的貢獻在於對JDBC框架的增強方面。 
Thomas在VMware的Cloud Foundry團隊,為Cloud Foundry所支持的各種框架和語言開發集成方案。
他是《Professional Java Development with the Spring Framework》一書的合著者,這本書出版於2005年,作者還包括Rod Johnson、Juergen Hoeller、Alef Arendsen以及Colin Sampaleanu。


Jon Brisbin是SpringSource Spring Data團隊的成員,致力於為開發人員提供有用的庫,從而簡化下一代數據形式的管理。
他曾幫忙將Grails GORM的對象映射器轉移到基於Java的應用程序之中,並為集成Riak數據存儲與RabbitMQ消息代理提供組件。
除此之外,他還針對事件應用模型撰寫博客並發表演講,他勤奮工作的領域還包括為前沿的非阻塞模式和傳統的基於JVM的應用搭建橋樑。


Michael Hunger長期熱衷於軟件開發。
他尤其關注於開發軟件的人、軟件技藝、編程語言以及代碼提升。 
**近兩年間,他與Neo Technology協作開發Neo4j圖數據庫。
作為Spring Data Neo4j的領 導者,他為對象-圖映射開發出了便利且完整的解決方案。
他還參與Neo4j雲託管。作為一名開發人員,Michael喜歡使用各種編程語言、每天學習新的東西、參與有趣且有前景的開源項目,並且參與編寫了多本與編程相關的圖書。 
Michael還是InfoQ的活躍編輯和採訪者。

目錄大綱

目錄

第一部分背景知識

第1章Spring Data項目3
1.1為Spring開發人員提供的NoSQL數據訪問功能3
1.2主題概述4
1.3領域5
1.4示例代碼6
1.4.1將源碼導入到IDE 6

第2章Repository:便利的數據訪問層11
2.1快速入門11
2.2定義查詢方法14
2.2.1查找查詢的策略14
2.2.2衍生查詢14
2.2. 3分頁和排序15
2.3定義Repository 16
2.3.1調整Repository接口17
2.3.2手動實現Repository方法18
2.4 IDE集成20
2.4.1 Intelli IDEA 21

第3章使用Querydsl實現類型安全的查詢23
3.1 Querydsl簡介23
3.2生成查詢元模型26
3.2.1構建系統集成26
3.2.2所支持的註解處理器27
3.2.3使用Querydsl對存儲進行查詢28
3.3集成Spring Data Repository 28
3.3.1執行斷言29
3.3.2手動實現Repository 29

第二部分關係型數據庫

第4章JPA Repository 33
4.1示例工程33
4.2傳統方式38
4.3啟動示例代碼39
4.4使用Spring Data Repository 42
4.4.1事務性45
4.4 .2 Repository與Querydsl集成46

第5章借助Querydsl SQL實現類型安全的JDBC編程48
5.1示例工程與搭建過程48
5.1.1 HyperSQL數據庫49
5.1.2 Querydsl的SQL模塊50
5.1 .3構建系統集成53
5.1.4數據庫模式54
5.1.5示例工程的領域實現54
5.2 QueryDslJdbcTemplate 57
5.3執行查詢58
5.3.1 Repository實現起步59
5.3.2查詢單個對象60
5.3.3 OneToManyResultSetExtractor抽像類61
5.3.4 CustomerListExtractor實現63
5.3.5 RowMapper的實現類64
5.3.6查詢對象列表65
5.4插入、更新和刪除操作65
5.4.1使用SQLInsertClause進行插入操作65
5.4.2使用SQLUpdateClause進行更新操作66
5.4.3使用SQLDeleteClause進行刪除行操作67

第三部分NoSQL

第6章MongoDB:文檔存儲71
6.1 MongoDB簡介71
6.1.1設置MongoDB 72
6 .1.2使用MongoDB Shell 73
6.1.3 MongoDB Java驅動74
6.2使用Spring命名空間搭建基礎設施75
6.3映射模塊76
6.3.1領域模型76
6.3.2搭建映射的基礎設施81
6.3.3索引83
6.3.4自定義轉換84
6.4 MongoTemplate 86
6.5 Mongo Repository 88
6.5.1搭建基礎設施88
6.5.2 Repository詳解88
6.5 .3 Mongo Querydsl集成90

第7章Neo4j:圖數據庫92
7.1圖數據庫92
7.2 Neo4j 93
7.3 Spring Data Neo4j概覽95
7.4將領域建模為圖96
7.5使用Spring Data Neo4j持久化領域對象101
7.5.1 Neo4jTemplate 103
7.6組合發揮圖和Repository的威力104
7.6.1基本的圖Repository操作106
7.6.2衍生和基於註解的查找方法106
7.7示例領域模型中的高級圖用例109
7.7 .1單個節點的多重角色109
7.7.2以產品分類和標籤為例講解圖中的索引110
7.7.3利用類似的興趣(協同過濾) 111
7.7.4推薦111
7.8事務、實體生命週期以及抓取策略112
7.9高級映射模型113
7.10使用Neo4j服務器114
7.11從這裡繼續學習115

第8章Redis:鍵/值存儲116
8.1 Redis概述116
8. 1.1搭建Redis 116
8.1.2使用Redis Shell 117
8.2連接到Redis 118
8.3對象轉換119
8.4對象映射121
8.5原子級計數器123
8.6發布/訂閱功能123
8 .6.1對信息進行監聽和響應124
8.6.2在Redis中使用Spring的緩存抽象125

第四部分快速應用開發

第9章使用Spring Roo實現持久層129
9.1 Roo簡介129
9.2 Roo的持久層131
9.3快速起步132
9.3.1借助命令行使用Roo 132
9.3.2借助Spring Tool Suite使用Roo 133
9.4 Spring Roo JPA Repository示例135
9.4.1創建工程135
9.4. 2搭建JPA持久化135
9.4.3創建實體135
9.4.4定義Repository 137
9.4.5創建Web層138
9.4.6運行示例139
9.5 Spring MongoDB JPA Repository的例子140
9 .5.1創建工程140
9.5.2搭建MongoDB持久化140
9.5.3創建實體140
9.5.4定義Repository 141
9.5.5創建Web層141
9.5.6運行示例141

第10章REST Repository導出器143
10.1示例工程144
10.1.1與Rest導出器進行交互146
10.1.2訪問Product 148
10.1.3訪問Customer 151
10.1.4訪問Order 154

第五部分大數據

第11章Spring for Apache Hadoop 159
11.1 Hadoop開發麵臨的挑戰159
11.2 Hello World 161
11.3揭秘Hello World 163
11.4使用Spring for Apache Hadoop的Hello World 166
11.5在JVM中編寫HDFS腳本170
11.6結合HDFS腳本與Job提交172
11.7 Job調度173
11.7.1使用TaskScheduler調度MapReduce Job 173
11.7.2使用Quartz調度MapReduce Job 175

第12章使用Hadoop分析數據176
12.1使用Hive 176
12.1. 1 Hello World 177
12.1.2運行Hive服務器178
12.1.3使用Hive Thrift客戶端179
12.1.4使用Hive JDBC客戶端181
12.1.5使用Hive分析Apache日誌文件183
12.2使用Pig 184
12.2.1 Hello World 185
12.2.2運行PigServer 187
12.2.3控制運行期腳本的執行189
12.2.4在Spring Integration數據管道中調用Pig腳本191
12.2. 5使用Pig分析Apache日誌文件192
12.3使用HBase 193
12.3.1 Hello World 193
12.3.2使用HBase Java客戶端194

第13章使用Spring Batch和Spring Integration創建大數據管道197
13.1收集並將數據加載到HDFS 197
13.1.1 Spring Integration介紹198
13.1.2複製日誌文件200
13.1.3事件流203
13.1.4事件轉發206
13.1.5管理207
13.1.6 Spring Batch簡介208
13.1.7從數據庫中加載並處理數據211
13.2 Hadoop工作流214
13.2.1 Spring Batch對Hadoop的支持214
13.2.2將wordcount樣例改造為Spring Batch應用216
13.2 .3 Hive和Pig的步驟218
13.3從HDFS導出數據219
13.3.1從HDFS到JDBC 219
13.3.2從HDFS到MongoDB 224
13.4收集並加載數據到Splunk 225

第六部分數據網格

第14章分佈式數據網格:GemFire 231
14.1 GemFire簡介231
14.2緩存與域232
14.3如何獲取GemFire 233
14.4通過Spring XML命名空間配置GemFire 234
14.4.1緩存配置234
14.4.2域配置238
14.4.3緩存客戶端配置240
14.4.4緩存服務端配置241
14.4.5 WAN配置242
14.4.6磁盤存儲配置243
14.5使用GemfireTemplate進行數據訪問244
14.6使用Repository 245
14.6.1 POJO映射245
14.6.2創建Repository 246
14.6.3 PDX序列化246
14.7支持持續查詢247