拥抱NoSQL--谈Spring Data MongoDB的简单使用

长平狐 发布于 2013/11/25 11:38
阅读 615
收藏 0

先说说MongoDB是什么。

< class="brush:csharp;gutter:false;">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)
原文链接:http://www.cnblogs.com/htynkn/archive/2011/10/30/2229467.html
加载中
返回顶部
顶部