MongoMongo简介
简介
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简介相关推荐
- etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理
1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...
- Docker学习(一)-----Docker简介与安装
一.Docker介绍 1.1什么是docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植 ...
- 【Spring】框架简介
[Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...
- TensorRT简介
TensorRT 介绍 引用:https://arleyzhang.github.io/articles/7f4b25ce/ 1 简介 TensorRT是一个高性能的深度学习推理(Inference) ...
- 谷粒商城学习笔记——第一期:项目简介
一.项目简介 1. 项目背景 市面上有5种常见的电商模式 B2B.B2C.C2B.C2C.O2O B2B 模式(Business to Business),是指商家和商家建立的商业关系.如阿里巴巴 B ...
- 通俗易懂的Go协程的引入及GMP模型简介
本文根据Golang深入理解GPM模型加之自己的理解整理而来 Go协程的引入及GMP模型 一.协程的由来 1. 单进程操作系统 2. 多线程/多进程操作系统 3. 引入协程 二.golang对协程的处 ...
- Linux 交叉编译简介
Linux 交叉编译简介 主机,目标,交叉编译器 主机与目标 编译器是将源代码转换为可执行代码的程序.像所有程序一样,编译器运行在特定类型的计算机上,输出的新程序也运行在特定类型的计算机上. 运行编译 ...
- TVM Operator Inventory (TOPI)简介
TOPI简介 这是 TVM Operator Inventory (TOPI) 的介绍.TOPI 提供了比 TVM 具有更高抽象的 numpy 风格的,通用操作和调度.TOPI 如何在 TVM 中,编 ...
- 计算机视觉系列最新论文(附简介)
计算机视觉系列最新论文(附简介) 目标检测 1. 综述:深度域适应目标检测标题:Deep Domain Adaptive Object Detection: a Survey作者:Wanyi Li, ...
最新文章
- 单片机定时报警C语言程序,51单片机 定时器 中断程序 (C语言)
- Some functions worth remembered in C Library (Updating)
- Npm如何升级package.json
- git提交代码报错解决方法 Git-remote Incorrect username or password ( access token )
- 命令行cd到_前端(只)需要掌握这些命令行(就还行了)
- 安卓讲课笔记(9):列表视图
- java利用循环打印AVA,JAVA语言-AVA文件流
- IDC:大数据——数字化转型时代的大商机
- 计算机图形学基础第七章ppt,第三章 计算机图形学基础ppt课件.ppt
- 标准Io编程学习笔记
- html网页设计大赛作品介绍,html简单网页设计作品
- 基于微信小程序的人脸分析学生课堂状态监测系统 文档+项目源码
- linux有线无线同时使用教程,巧用无线路由器 让有线、无线网络互通
- info setup 制作的安装程序 提示卸载程序出现内部错误找不到此版本的卸载程序的utCompiledCode记录
- tcl/tk实例详解——eval
- 数学上的表示“任意”和“存在”的符号
- 【Python个人学习笔记】--- pyc文件(了解)
- 一篇文章让你搞懂,Python文件操作
- 我的物联网项目初建团队
- javascript 原生类 DOMParser 把 字符串格式的HTML文档源码 转换成 document DOM对象
热门文章
- Linux内核入门-- likely和unlikely
- 万事达卡携手中国银行、北汽鹏龙发布联名信用卡
- JAVA简单的银行管理系统
- 解读视联网发展阶段之成年篇
- excel切片器_不喜欢Excel自带的切片器样式,我一秒设置个性化切片器
- 千峰java 笔记整理_JAVA学习笔记系列:菜鸟Vue学习笔记(四)
- 汉诺塔问题(Hanoi塔)
- ZYNQ C++ 访问PL物理地址
- i2c信号的ACK与NACK
- rospy.init_node(‘talker_node‘, anonymous=True)中anonymous意思