简介

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. 透彻影像王书浩:三易其辙与功不唐捐
  2. lua 实现策划需要保留的小数位数
  3. 华为语音助手怎么关闭_一直觉得华为语音助手挺鸡肋的,直到用了这个功能!真香...
  4. vue入门教程(二)
  5. 外贸单证之信用证审核的18个要点
  6. 外企面试官最爱提的10个问题
  7. 数据库的实现【笔记】
  8. c++读取utf8文件_Node.js 进阶之 fs 文件模块学习
  9. DBA/运维人员近期直播活动日历
  10. 单片机 实现计算机键盘录制,用单片机实现PC键盘输入.doc
  11. 用 PHPRPC 实现 Ajax 安全登录
  12. 芯片14纳米与7纳米相比,是不是芯片大一点,性能差不太多呢?
  13. vue基础之指令(内置指令,自定义指令,指令的生命周期函数)
  14. UVA1292-----Strategic game-----树形DP解决树上的最小点覆盖问题
  15. 数论 day 2 试题解析
  16. html添加在线音乐代码,给网页添加背景音乐的HTML代码
  17. 最新小学计算机课五年级上册目录,部编版小学语文教材2020最新调整!涉及20多篇课文!(附2020年教育部中小学生阅读指导目录)...
  18. 出场顺序很重要下一句_年少有为一夜刷爆朋友圈:人生的出场顺序真的很重要...
  19. arch Linux更新添加源,Arch Linux 更新源(以清华 arch 源为例)
  20. OpenFoam编程笔记——starccm网格转openfoam格式

热门文章

  1. ncl如何添加线shp文件_NCL画图个例讲解.pdf
  2. (四)eos开发实战dapp+游戏--发币(TKB币)
  3. 亚马逊测评自养号环境系统的介绍和用法
  4. 莫拉克电梯服务器说明书_默纳克电梯功能参数表
  5. 00后学习微积分,推荐访问袁萌专栏
  6. 嵌入式 Linux 编程
  7. 《转》前端开发面试题
  8. 网站降权根服务器有关系吗,导致网站降权或被k的原因有哪些?
  9. Python 中paramiko模块应用
  10. GitHub上最火的两份Java面试小册,Star已经超百万