这篇文章不错:Spring Data - MongoDB 教程 (1.0.0.M1)http://miller-cn.iteye.com/blog/1258859

1、介绍

  之前在很多地方一直见到这个Spring Data 神奇的东西,不知道是啥东东,终于,今天来简单的探个究竟,底下是我从网上整理来的……

  首先,解释下为啥要使用Spring来集成MongoDB:因为mongoDB的java驱动程序使用起来较为繁琐,特别是处理关联关系多、层次深的情况时。需要书写大量的构造DBObject的代码。遇到这样的问题第一个肯定想到“万金油”spring。spring data对很多nosql产品都有支持,比如redis、hbase、mongodb、neo4j等。如果工程已经使用了spring,引入spring data那应该是理所当然咯。

  Spring Data简介:

  Spring Data 作为SpringSource的其中一个父项目, 旨在统一和简化对各类型持久化存储, 而不拘泥于是关系型数据库还是NoSQL 数据存储。无论是哪种持久化存储, 数据访问对象(或称作为DAO,即 Data Access Objects)通常都会提供对单一域对象的CRUD (创建、读取、更新、删除)操作、查询方法、排序和分页方法等。 Spring Data则提供了基于这些层面的统一接口(CrudRepository,PagingAndSortingRepository)以及对持久化存储的实现。比如 jdbcTemplate,mongoTemplate==;Spring Data 项目的目的是为了简化构建基于 Spring 框架应用的数据访问计数,包括非关系数据库、Map-Reduce 框架、 云数据服务等等;另外也包含对关系数据库的访问支持。

  有木有使用Spring Data的对比,场景:对MongoDB进行模糊匹配的查询:

  删除一个条目

  • 传统的MongoDB实现
 public Boolean delete(String id) {
logger.debug(Deleting existing person); try {
// 检索一个条目
BasicDBObject item = (BasicDBObject) getDBObject( id );
// 获取集合
DBCollection coll = MongoDBFactory.getCollection(mydb,mycollection);
// 删除检索到的条目
coll.remove(item); return true; } catch (Exception e) {
logger.error(An error has occurred while trying to delete new user, e);
return false;
}
}
  • 通过Spring Data的实现
 public Boolean delete(String id) {
logger.debug(Deleting existing person); try { // 通过id检索到一个Person
Query query = new Query(where(pid).is(id));
// 运行查询和删除
mongoTemplate.remove(query); return true; } catch (Exception e) {
logger.error(An error has occurred while trying to delete new user, e);
return false;
}
}

明显可以看出使用Spring Data敲的代码比较容易理解、工整

  现在有很多人Spring见的腻了也开始烦了。是的,Spring野心很大,他几乎想要垄断Java方面的任何事情。没办法我从使用Spring后就离不开他,以至于其他框架基本上都不用学。我学了Spring的很多,诸如:Spring Security/Spring Integration/Spring Batch等。。。不发明轮子的他已经提供了编程里的很多场景,我利用那些场景解决了工作中的很多问题,也使我的工作变得很高效。从而我又时间学到它更多。Spring Data Mongo封装了mongodb java driver,提供了和SpringJDBC/Template一致编程风格的MongoTemplate。

见:http://static.springsource.org/spring-data/data-mongodb/docs/current/api/org/springframework/data/mongodb/core/MongoTemplate.html

2、Spring Data MongoDB的CRUD

  项目的源码来自于http://blog.mkfree.com/posts/511396a3975a15ea1757d849,底下有项目的源码链接,下载导入即可使用,使用的是Maven创建工程项目,感谢此博主的无私奉献,里面的有关MongoDB的文章还是不错的,看得出来是博主自己的经验积累,我也是从中得到了些知识,不过,说一句,那网站不管是界面还是功能,都不敢恭维啊,文章列表都是乱七八糟的,连最基本的分类都没有,稍微吐槽下……

  接下来的有关代码的项目,应该都是原创了,敬请期待……

MongoDB的使用学习之(五)Spring集成MongoDB以及简单的CRUD的更多相关文章

  1. spring集成mongodb jar包版本问题

    在开发过程中,spring集成mongodb的jar包. 如果需要使用排序功能. spring-data-mongodb-1.4.1.RELEASE.jar 的版本为1.4.1,如果使用如下代码: Q ...

  2. Activiti学习——Activiti与Spring集成

    转: Activiti学习——Activiti与Spring集成 与Spring集成 基础准备 目录结构 相关jar包 Activiti的相关jar包 Activiti依赖的相关jar包 Spring ...

  3. spring集成mongodb封装的简单的CRUD

    1.什么是mongodb         MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. mongoDB MongoDB是一个介 ...

  4. Spring学习(十五)----- Spring AOP通知实例 – Advice

    Spring AOP(面向方面编程)框架,用于在模块化方面的横切关注点.简单得说,它只是一个拦截器拦截一些过程,例如,当一个方法执行,Spring AOP 可以劫持一个执行的方法,在方法执行之前或之后 ...

  5. MongoDB的使用学习之(七)MongoDB的聚合查询(两种方式)附项目源码

    先来张在路上…… 铛铛铛……项目源码下载地址:http://files.cnblogs.com/ontheroad_lee/MongoDBDemo.rar 此项目是用Maven创建的,没有使用Mave ...

  6. MongoDB快速入门学习笔记1 windows安装MongoDB

    1.安装MongoDB 从MongoDB官网上下载MongoDB,我下载的版本是64位的3.2.6.下载完以后直接安装,我的安装目录是D:\work\MongoDB. 2.配置MongoDB的环境变量 ...

  7. Spring学习(五)——集成MyBatis

    本篇我们将在上一篇http://www.cnblogs.com/wenjingu/p/3829209.html的Demo程序的基础上将 MyBatis 代码无缝地整合到 Spring 中. 数据库仍然 ...

  8. Mongodb学习笔记五(C#操作mongodb)

    mongodb c# driver(驱动)介绍 目前基于C#的mongodb驱动有两种,分别是官方驱动(下载地址)和samus驱动(下载地址). 本次我们只演示官方驱动的使用方法. 官方驱动文档查看 ...

  9. spring集成mongodb通过aop记录业务日志

    1. 编辑 pom.xml 添加 maven 依赖 <!-- mongodb --> <dependency> <groupId>org.mongodb</g ...

随机推荐

  1. 2019.9.23JAVA动手动脑

    1请看以下代码,你发现了有什么特殊之处吗? // MethodOverload.java// Using overloaded methods public class MethodOverload ...

  2. Redis高级命令及特性(安全性)

    高级命令 ​ keys * : 返回满足的所有键 ,可以模糊匹配 ​ exists :是否存在指定的key,存在返回1,不存在返回0 ​ exprie:设置某个key的过期时间 ​ ttl:查看剩余时 ...

  3. Spring 4.2.2以上版本和swagger集成方案和踩过的坑

    因为公司使用的spring版本太高,在集成swagger的时候会存在一些问题,而网上的很多实例大多都是版本比较低的,为了是朋友们少才坑,我这边将集成的过程记录一下: 1. 引入spring.swagg ...

  4. 【转】博弈论——acm

    转自http://blog.csdn.net/lgdblue/article/details/15809893 序:博弈是信息学和数学试题中常会出现的一种类型,算法灵活多变是其最大特点,而其中有一类试 ...

  5. Oracle报Ora01522

    应用服务报错截图 数据库后台日志报错截图 从日志分析应该是回滚异常造成表空间无法使用回滚段,而回滚涉及的表空间为undo表空间 尝试新建UNDO表空间,再将UNDO_TABLESPACE切换到新建的U ...

  6. 高级软件测试技术-任务进度-Day03

    任务进度11-15 使用工具 Jira 小组成员 华同学.郭同学.穆同学.沈同学.覃同学.刘同学 任务进度 经过了前两天的学习任务的安排,以下是大家的任务进度: 穆同学(任务1) 1.今天就接着昨天的 ...

  7. php 防盗链

    防盗链的技术已经很普遍了,有些网站不喜欢自己的图片被别的网站直接复制使用,便使用了防盗链的技术,这样别人在直接复制使用网站图片时,图片便会按照程序的设定不显示或显示防盗链等字样. 使用了防盗链技术,不 ...

  8. 任泽平:95页PPT分析2018(经济、房价、政策)

    任泽平:95页PPT分析2018(经济.房价.政策) 2017-12-07 06:38房价

  9. Cordova-在现有iOS工程自动化接入Cordova插件

    模拟Cordova插件命令 自己编写脚本,了解cordova添加插件做了哪些事情. 上一篇文章了解到,web与native的交互主要是cordova.js中的exec方法调用,触发交互事件.UIWeb ...

  10. Mybaits配置多个数据库操作sql环境

    mybitas可以配置sql语句适用于不同数据库下的操作,因为不同数据库sql语句可能有差别,接下来介绍如果进行操作 1.在jdbc.properprites配置驱动 jdbc.driver=com. ...