zoukankan      html  css  js  c++  java
  • 拥抱NoSQL谈Spring Data MongoDB的简单使用

    先说说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)


    作者:黄云坤
    出处:http://www.huangyunkun.com/
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    支持: 新浪微博

  • 相关阅读:
    GeoServer与Spring MVC
    GeoServer二次开发1 hello Geoserver
    servlet的生命周期
    springboot打包出错,没有主清单
    空间数据库管理
    Gone with the wind
    谎言中的民众
    还是有些怀念这里啊
    MSN Protcol 学习笔记
    祝我的老师教师节快乐!
  • 原文地址:https://www.cnblogs.com/htynkn/p/2229467.html
Copyright © 2011-2022 走看看