简介

MongMongo是一个用Java写的ODM框架,使得对MongoDB的操作更加便捷。MongoMongo努力为Java开发者提供类似于ActiveORM 或者 Hibernate的操作API,并且保留了MongoDB的schemaless,document-based 设计,动态查询,原子修改操作等特性。当然你可以很方便的绕开MongoMongo而使用Java Driver 原生提供的功能。

示例代码

public class Blog extends Document {  static {  storeIn("blogs");                  hasManyEmbedded("articles", new Options(map(  Options.n_kclass, Article.class  )));  //create indexindex(map("blogTitle", -1), map(unique,true));  //validate uerName fieldvalidate("userName",map(length,map(  minimum,5  )));  }  //association relatedpublic AssociationEmbedded articles() {throw new AutoGeneration();}  private String userName;  private String blogTitle;
}  public class Article extends Document {  static {          belongsToEmbedded("blog", new Options(map(  Options.n_kclass, Blog.class  )));  }  public AssociationEmbedded blog() {throw new AutoGeneration();}  private String title;  private String body;
}  public class Usage{  public static void main(String[] args){  Blog blog = Blog.where(map("userName","sexy java")).in(map("id",list(1,2,3))).singleFetch();  blog.articles().build(map("title","i am title","body","i am body"));  blog.save();  }  }
从上面代码中能够学习到关联,存储,创建索引,设置别名等操作都简单的在static 块中调用一个函数即可实现。

和Spring-data对比

Spring-data的写法为
public static void main( String[] args )  {  MongoOperations mongoOps = new MongoTemplate(new Mongo(), "mydb");  Person person = new Person();  person.setName("Joe");  person.setAge(10);  mongoOps.insert(person);  log.info(mongoOps.findOne(new Query(Criteria.where("name").is("Joe")), Person.class));  }  
而MongoMongo写法为
public static void main( String[] args )  {  Person person =  Person.create(map("name","Joe","age",34));  person.save();  log.info(Person.where(map("name","Joe")).singleFetch());   }
从上面能够看出Spring-dat为了构造查询串引入Criteria对象,为了进行查询引入Query对象,查询时还要申明Person对象等,而MongoMongo写的比较简单而且清晰。

总结

针对MongoDB非关系型数据库的操作框架有很多,在项目中也可以选择合适项目的比较关系,通过对比之后单独使用MongoMongo在代码易用性和清晰度上占优势,而其他的可能和其他框架集成上有优势,所以需要用到的时候做出正确的判断就可以了。

MongoMongo简介相关推荐

  1. etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理

    1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...

  2. Docker学习(一)-----Docker简介与安装

    一.Docker介绍 1.1什么是docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植 ...

  3. 【Spring】框架简介

    [Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...

  4. TensorRT简介

    TensorRT 介绍 引用:https://arleyzhang.github.io/articles/7f4b25ce/ 1 简介 TensorRT是一个高性能的深度学习推理(Inference) ...

  5. 谷粒商城学习笔记——第一期:项目简介

    一.项目简介 1. 项目背景 市面上有5种常见的电商模式 B2B.B2C.C2B.C2C.O2O B2B 模式(Business to Business),是指商家和商家建立的商业关系.如阿里巴巴 B ...

  6. 通俗易懂的Go协程的引入及GMP模型简介

    本文根据Golang深入理解GPM模型加之自己的理解整理而来 Go协程的引入及GMP模型 一.协程的由来 1. 单进程操作系统 2. 多线程/多进程操作系统 3. 引入协程 二.golang对协程的处 ...

  7. Linux 交叉编译简介

    Linux 交叉编译简介 主机,目标,交叉编译器 主机与目标 编译器是将源代码转换为可执行代码的程序.像所有程序一样,编译器运行在特定类型的计算机上,输出的新程序也运行在特定类型的计算机上. 运行编译 ...

  8. TVM Operator Inventory (TOPI)简介

    TOPI简介 这是 TVM Operator Inventory (TOPI) 的介绍.TOPI 提供了比 TVM 具有更高抽象的 numpy 风格的,通用操作和调度.TOPI 如何在 TVM 中,编 ...

  9. 计算机视觉系列最新论文(附简介)

    计算机视觉系列最新论文(附简介) 目标检测 1. 综述:深度域适应目标检测标题:Deep Domain Adaptive Object Detection: a Survey作者:Wanyi Li, ...

最新文章

  1. 单片机定时报警C语言程序,51单片机 定时器 中断程序 (C语言)
  2. Some functions worth remembered in C Library (Updating)
  3. Npm如何升级package.json
  4. git提交代码报错解决方法 Git-remote Incorrect username or password ( access token )
  5. 命令行cd到_前端(只)需要掌握这些命令行(就还行了)
  6. 安卓讲课笔记(9):列表视图
  7. java利用循环打印AVA,JAVA语言-AVA文件流
  8. IDC:大数据——数字化转型时代的大商机
  9. 计算机图形学基础第七章ppt,第三章 计算机图形学基础ppt课件.ppt
  10. 标准Io编程学习笔记
  11. html网页设计大赛作品介绍,html简单网页设计作品
  12. 基于微信小程序的人脸分析学生课堂状态监测系统 文档+项目源码
  13. linux有线无线同时使用教程,巧用无线路由器 让有线、无线网络互通
  14. info setup 制作的安装程序 提示卸载程序出现内部错误找不到此版本的卸载程序的utCompiledCode记录
  15. tcl/tk实例详解——eval
  16. 数学上的表示“任意”和“存在”的符号
  17. 【Python个人学习笔记】--- pyc文件(了解)
  18. 一篇文章让你搞懂,Python文件操作
  19. 我的物联网项目初建团队
  20. javascript 原生类 DOMParser 把 字符串格式的HTML文档源码 转换成 document DOM对象

热门文章

  1. Linux内核入门-- likely和unlikely
  2. 万事达卡携手中国银行、北汽鹏龙发布联名信用卡
  3. JAVA简单的银行管理系统
  4. 解读视联网发展阶段之成年篇
  5. excel切片器_不喜欢Excel自带的切片器样式,我一秒设置个性化切片器
  6. 千峰java 笔记整理_JAVA学习笔记系列:菜鸟Vue学习笔记(四)
  7. 汉诺塔问题(Hanoi塔)
  8. ZYNQ C++ 访问PL物理地址
  9. i2c信号的ACK与NACK
  10. rospy.init_node(‘talker_node‘, anonymous=True)中anonymous意思