MongoDB orm框架的注意事项及简单使用


Posted in MongoDB onJune 20, 2021
目录
  • Ⅰ. 简介
  • Ⅱ. 注意事项
  • Ⅲ. 使用方法
  • Ⅳ. 教程

首先spring自带了mongodb的orm,spring data mongodb,但是这个框架非常难用,最令人抓狂的是每个文档都要带一个 _class 字段,因为这个是string的,所以占用不少空间,而且去除也比较麻烦。故而使用 zfoo orm 框架

 

Ⅰ. 简介

基于MongoDB的orm框架,提供POJO对象和MongoDB数据库之间的映射

 

Ⅱ. 注意事项

  • POJO对象的属性必须提供get和set方法,否则无法映射
  • 不支持泛型
  • 如果不想映射某属性,直接加上transient关键字
  • 目前支持基本数据属性(byte,short,int,long,float,double,boolean),字符串String,List,Set集合属性的映射,不支持Map
  • 数据库主键能用整数尽量用整数,因为MongoDB默认的主键是一个字符串,比较占空间
  • 数据库使用自研的orm框架,比如一个实体类UserEntity,映射到数据库中的集合为user,首字母小写,去掉Entity
  • 基于 caffeine 的高性能数据缓存
  • 语法校验,如对没有加上get和set的字段自动语法提示

 

Ⅲ. 使用方法

1. IAccessor接口,为数据访问接口

  • 插入数据到数据库,会以对象的id()方法的返回值作为主键
OrmContext.getAccessor().insert(obj)
  • 删除数据库中的数据,会以对象的id()方法的返回值作为查找关键字,删除以这个id()为主键的数据
OrmContext.getAccessor().delete(obj);
  • 修改数据库中的数据
OrmContext.getAccessor().update(obj);

2. IQuery接口,为数据复杂查询接口

3. 缓存使用方法

例如有下列配置

<orm:config id="config" entity-package="com.zfoo.orm.**.entity">

    <orm:host database="test" user="" password="">
        <orm:address name="server0" url="127.0.0.1:27017"/>
    </orm:host>

    <!-- 缓存策略 -->
    <orm:caches>
        <orm:cache strategy="ten" size="10" expire-millisecond="600000"/>
        <orm:cache strategy="hundred" size="100" expire-millisecond="600000"/>
        <orm:cache strategy="thousand" size="1000" expire-millisecond="600000"/>
        <orm:cache strategy="threeThousand" size="3000" expire-millisecond="600000"/>
        <orm:cache strategy="tenThousand" size="10000" expire-millisecond="600000"/>
    </orm:caches>

    <!-- 持久化策略 -->
    <orm:persisters>
            <orm:persister strategy="cronDefault" type="cron" config="0,30 * * * * ?"/>
            <orm:persister strategy="cron3s" type="cron" config="0/3 * * * * ?"/>
            <orm:persister strategy="cron15s" type="cron" config="0/15 * * * * ?"/>
            <orm:persister strategy="cron30s" type="cron" config="0/30 * * * * ?"/>
            <orm:persister strategy="cron1m" type="cron" config="0 0/30 * * * ?"/>
            <orm:persister strategy="time30s" type="time" config="30000"/>
        </orm:persisters>
</orm:config>

有下列注解

@EntityCaches(cacheStrategy = "tenThousand", persister = @Persister("time30s"))
public class UserEntity implements IEntity<Long> {
}
  • database表示操作哪个数据库
  • address表示数据库的地址,支持分片的配置
  • caches中的strategy表示一个缓存的策略,即将数据库中的数据先读入Orm中的EntityCaches缓存,如hundred这个策略表示,缓存数据库中1000条数据,10分钟过期
  • persisters中的strategy表示一个持久化的策略,如3s这个策略表示,将EntityCaches中的缓存数据每3s写入到数据库中一次,即使中途宕机,也只损失3秒的数据
  • EntityCaches这个注解表示将会被Orm管理,使用hundred策略,缓存的持久化策略为3s

 

Ⅳ. 教程

test下中包含了所有增删改查的教程,运行之前请先安装MongoDB

以上就是MongoDB orm框架的注意事项及简单使用的详细内容,更多关于MongoDB orm框架的资料请关注三水点靠木其它相关文章!

MongoDB 相关文章推荐
Mongo服务重启异常问题的处理方法
Jul 01 MongoDB
mongodb的安装和开机自启动详细讲解
Aug 02 MongoDB
mongodb清除连接和日志的正确方法分享
Sep 15 MongoDB
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
Nov 01 MongoDB
一次线上mongo慢查询问题排查处理记录
Mar 18 MongoDB
MongoDB误操作后使用oplog恢复数据
Apr 11 MongoDB
MongoDB支持的数据类型
Apr 11 MongoDB
SpringBoot集成MongoDB实现文件上传的步骤
Apr 18 MongoDB
Mongodb 迁移数据块的流程介绍分析
Apr 18 MongoDB
MongoDB数据库之添删改查
Apr 26 MongoDB
MongoDB使用profile分析慢查询的步骤
Apr 30 #MongoDB
MongoDB balancer的使用详解
Apr 30 #MongoDB
MongoDB数据库的安装步骤
Jun 18 #MongoDB
MongoDB数据库常用的10条操作命令
Jun 18 #MongoDB
MongoDB 常用的crud操作语句
Jun 20 #MongoDB
详解MongoDB的条件查询和排序
Jun 23 #MongoDB
SpringBoot整合MongoDB的实现步骤
Jun 23 #MongoDB
You might like
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
NodeJs中的VM模块详解
2015/05/06 NodeJs
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
每天一篇javascript学习小结(Date对象)
2015/11/13 Javascript
jQuery自动完成插件completer附源码下载
2016/01/04 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
JavaScript编程中实现对象封装特性的实例讲解
2016/06/24 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
浅谈Vue项目骨架屏注入实践
2019/08/05 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
在Python中使用Mako模版库的简单教程
2015/04/08 Python
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
使用python实现抓取腾讯视频所有电影的爬虫
2019/04/15 Python
Python使用LDAP做用户认证的方法
2019/06/20 Python
Python之指数与E记法的区别详解
2019/11/21 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
2020/03/23 Python
python实现猜单词游戏
2020/05/22 Python
使用Keras构造简单的CNN网络实例
2020/06/29 Python
html5 canvas实现圆形时钟代码分享
2013/12/25 HTML / CSS
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
职工运动会邀请函
2014/02/02 职场文书
工地安全检查制度
2014/02/04 职场文书
英语自我介绍演讲稿
2014/09/01 职场文书
2014年幼儿园重阳节活动方案
2014/09/16 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
实习工作表现评语
2014/12/31 职场文书
营业员岗位职责
2015/02/11 职场文书
八年级作文之感恩
2019/11/22 职场文书
springmvc直接不经过controller访问WEB-INF中的页面问题
2022/02/24 Java/Android