先說說MongoDB是什麼。
MongoDB是一個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。他支援的資料結構非常鬆散,是類似json的bjson格式,因此可以儲存比較複雜的資料類型。Mongo最大的特點是他支援的查詢語言非常強大,其文法有點類似於物件導向的查詢語言,幾乎可以實作類別似關聯式資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。它的特點是高效能、易部署、易使用,儲存資料非常方便。主要功能特性有:面向集合儲存,易儲存物件類型的資料。模式自由。支援動態查詢。支援完全索引,包含內部對象。支援查詢。支援複製和故障恢複。使用高效的位元據儲存,包括大型物件(如視頻等)。自動處理片段,以支援雲端運算層次的擴充性支援RUBY,PYTHON,JAVA,C++,PHP等多種語言。檔案儲存體格式為BSON(一種JSON的擴充)可通過網路訪問
MongoDB官網也有各語言所用的API,當然也有Java的了。但是平日寫的東西大部分是基於Spring架構的,自然希望對於資料庫的操作也在Spring的掌控之下。前幾日才Spring的官網看到了SPRING DATA MONGODB,對此高度興趣稍微試了一下。
10月24日發布的是Spring Data MongoDB 1.0.0.M5 Released。自然還需要Spring Framework哈。
首先引用相關的包,主要是以下兩個:
spring-data-mongodb-1.0.0.M4.jar
spring-data-commons-1.2.0.M1.jar
其他諸如mongo-java-driver.jar的還是需要的,看自己的需要。
下面開始我們的操作了。
1.首先註冊一個Mongo的執行個體
(1)方法一
@Configuration
public class AppConfig {
public @Bean Mongo mongo() throws UnknownHostException {
return new Mongo("localhost"); //如果是遠端就填IP
}
}
(2)方法二:xml設定檔
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation=
"http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<mongo:mongo host="localhost" port="27017"/>
</beans>
還有一些細節可以設定:
<mongo:mongo host="localhost" port="27017">
<mongo:options connections-per-host="8"
threads-allowed-to-block-for-connection-multiplier="4"
connect-timeout="1000" //連線逾時時間
max-wait-time="1500}" //等待時間
auto-connect-retry="true"
socket-keep-alive="true"
socket-timeout="1500" //Socket逾時時間
slave-ok="true"
write-number="1"
write-timeout="0"
write-fsync="true"/>
</mongo:mongo/>
說實在話我對於其中的幾個timeout分的不是很清楚,希望瞭解的朋友指教。
2.MongoDbFactory
這個是位於org.springframework.data.mongodb.core下的,主要有兩個方法
DB getDb() throws DataAccessException;
DB getDb(String dbName) throws DataAccessException;
現在註冊一個工廠執行個體
(1)方法一
@Configuration
public class MongoConfiguration {
public @Bean MongoDbFactory mongoDbFactory() throws Exception {
return new SimpleMongoDbFactory(new Mongo(), "databaseName");
}
}
(2)方法二:Xml配置
<mongo:db-factory dbname="database">
還有username,password的屬性可選,詳細參考文檔。
3.MongoTemplate的使用
還是先註冊一下:
public @Bean MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(mongo(), "databaseName");
}
同樣支援Xml方式:
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongo"/>
<constructor-arg name="databaseName" value="test"/>
</bean>
配置到這裡就差不多了。
具體的使用倒是沒有什麼可說的,參考API就可以搞定了。
最常用的:
建立 insert
儲存 save
刪除 remove
文檔地址:http://static.springsource.org/spring-data/data-mongo/docs/1.0.0.M5/api/org/springframework/data/mongodb/core/MongoTemplate.html#MongoTemplate(org.springframework.data.mongodb.MongoDbFactory)