《Spring Data實戰》——1.2 主題概述
本節書摘來自異步社區《Spring Data實戰》一書中的第1章,第1.2節,作者: 【美】Mark Pollack , Oliver Gierke , Thomas Risberg , Jon Brisbin , Michael Hunger著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看
1.2 主題概述
Spring Data的核心目標是:支持對所有的存儲進行資源配置,從而實現對該存儲的訪問。這種支持主要是通過XML命名空間和Spring JavaConfig的支持類實現的,這可以使我們輕鬆地對Mongo數據庫、嵌入式Neo4j實例等建立訪問。除此之外,它也集成了Spring的核心功能,如JMX。這意味著某些存儲可以通過原生API暴露統計數據,這些數據將會由Spring Data暴露給JMX。
大部分的NoSQL Java API並未支持將領域對象映射到存儲的數據抽象(MongoDB中的文件,Neo4j中的節點與關係)。因此,當使用原生的Java驅動程序進行讀取和寫入操作時,通常需要編寫大量的代碼來將數據映射到應用程序的領域對象。所以Spring Data模塊最核心的部分是一個映射和轉換的API,用來獲取要持久化的領域類中的元數據,使得任意領域對象都可以轉換成存儲用的數據類型。
在此基礎上,就如同著名的Spring JdbcTemplate、JmsTemplate等,我們也會看到以模板模式實現的API,其中包括RedisTemplate、MongoTemplate等。或許你已經知道,這些模板提供了讓我們可以執行常用操作的輔助方法。例如:在一條語句中持久化一個對象的時候,能夠自動進行資源管理和異常處理。此外,還提供了回調接口的API,允許在資源管理和異常處理過程中使用存儲原生的API,以提高靈活性。
這些功能給我們提供了一個工具箱,使得我們可以像使用傳統的數據庫那樣來實現數據訪問層。後麵的章節將會詳細介紹這些功能。為了讓程序變得更簡單,Spring Data還在模板實現的基礎上提供了一個存儲(repository)抽象,這將減少數據訪問對象在實現一個普通接口時去定義通用場景的代價,如標準的CRUD(創建、讀取、更新、刪除)操作以及執行存儲支持的查詢語句。事實上,這種抽象位於最頂層,而且它會盡可能在合理範圍內將不同存儲API融合在一起。因此,存儲的操作將擁有許多共同點。這也是後麵會有專門的章節(第2章)來介紹基本編程模型的原因。
接著,我們來看一下用來展示這些特定存儲模塊功能所用的示例代碼和領域模型。
最後更新:2017-05-31 12:02:10