先说说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)方法一
1 2 3 4 5 |
@Configurationpublic class AppConfig { public @Bean Mongomongo()throws UnknownHostException { returnnew Mongo("localhost");//如果是远程的就填IP } } |
(2)方法二:xml配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?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"/> |
还有一些细节可以设置:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<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下的,主要有两个方法
1 2 |
DB getDb()throws DataAccessException; DB getDb(String dbName)throws DataAccessException; |
现在注册一个工厂实例
(1)方法一
1 2 3 4 5 6 |
@Configuration publicclass MongoConfiguration { public @Bean MongoDbFactorymongoDbFactory()throws Exception { returnnew SimpleMongoDbFactory(new Mongo(),"databaseName"); } } |
(2)方法二:Xml配置
1 |
<mongo:db-factory dbname="database"> |
还有username,password的属性可选,详细参考文档。
3.MongoTemplate的使用
还是先注册一下:
1 2 3 |
public @Bean MongoTemplatemongoTemplate()throws Exception { returnnew MongoTemplate(mongo(),"databaseName"); } |
同样支持Xml方式:
1 2 3 4 |
<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