天天看點

《深入實踐Spring Boot》一2.3 使用MongoDBMongoDB

在目前流行的nosql資料庫中,mongodb是大家接觸比較早而且用得比較多的資料庫。mongodb是文檔型的nosql資料庫,具有大資料量、高并發等優勢,但缺點是不能建立實體關系,而且也沒有事務管理機制。

在spring boot中使用mongodb也像使用jpa一樣容易,并且同樣擁有功能完善的資源庫。同樣的,要使用mongodb,首先必須在工程的maven中引入它的依賴,如代碼清單2-14所示。除了mongodb本身的依賴之外,還需要一些附加的工具配套使用。

代碼清單2-14 使用mongodb的maven依賴配置

mongodb是文檔型資料庫,使用mongodb也可以像使用關系型資料庫那樣為文檔模組化。如代碼清單2-15所示,為使用者文檔模組化,它具有使用者名、密碼、使用者名稱、郵箱和注冊日期等字段,有一個用來儲存使用者角色的資料集,還定義了一個構造函數,可以很友善地用來建立一個使用者執行個體。

代碼清單2-15 使用者文檔模組化

mongodb也有像使用jpa那樣的資源庫,如代碼清單2-16所示,為使用者文檔建立了一個repository接口,繼承于mongorepository,實作了文檔持久化。

代碼清單2-16 使用者文檔持久化

public interface userrepository extends mongorepository {

}

3

《深入實踐Spring Boot》一2.3 使用MongoDBMongoDB

mongorepository的繼承關系如圖2-4所示,看起來跟jpa的資源庫的繼承關系沒有什麼兩樣,它也包含通路資料庫的豐富功能。

代碼清單2-17是用在測試中的使用mongodb的一個配置類定義,其中@propertysource指定讀取資料庫配置檔案的位置和名稱,@enablemongorepositories啟用資源庫并設定定義資源庫接口放置的位置,這裡使用環境變量environment來讀取配置檔案的一些資料庫配置參數,然後使用一個資料庫用戶端,連接配接mongodb伺服器。

代碼清單2-17 testdatasourceconfig配置類

如果還沒有安裝mongodb伺服器,可以參照附錄b的方法安裝并啟動一個mongodb伺服器。然後,使用如代碼清單2-18所示的配置方法配置連接配接伺服器的一些參數,該配置假定你的mongodb伺服器安裝在本地,并使用預設的資料庫端口:27017。

代碼清單2-18 mongodb資料庫配置

mongo.host=localhost

mongo.name=test

mongo.port=27017

這樣就可以編寫一個juint測試例子來測試userrepository接口的使用情況,如代碼清單2-19所示。測試例子首先使用使用者文檔類建立一個使用者對象執行個體,然後使用資源庫接口調用save方法将使用者對象儲存到資料庫中,最後使用f?indall方法查詢所有使用者的清單,并使用一個循環輸出使用者的簡要資訊。

代碼清單2-19 mongodb測試

roles);

現在可以在idea的run/debug conf?iguration配置中增加一個juint測試項目,子產品選擇mongodb,工作目錄選擇子產品所在的工程根目錄,類選擇上面編寫的測試例子,即dbdemo.mongo.test.repositorytests,并将配置儲存為mongotest。

使用debug方式運作測試項目mongotest。如果通過測試,将輸出查到的使用者的簡要資訊,如下所示:

dbdemo.mongo.test.repositorytests - ===user=== userid:1, username:name, pass:12345678, registrationdate:tue jun 07 14:26:02 cst 2016

這時使用mongodb資料庫用戶端輸入下面的查詢指令,也可以查到這條文檔的詳細資訊,這是一條json結構的文本資訊。