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 相关文章推荐
MongoDB使用profile分析慢查询的步骤
Apr 30 MongoDB
MongoDB 常用的crud操作语句
Jun 20 MongoDB
详解MongoDB的条件查询和排序
Jun 23 MongoDB
SpringBoot整合MongoDB的实现步骤
Jun 23 MongoDB
Mongo服务重启异常问题的处理方法
Jul 01 MongoDB
MongoDB日志切割的三种方式总结
Sep 15 MongoDB
关于CentOS 8 搭建MongoDB4.4分片集群的问题
Oct 24 MongoDB
MongoDB连接数据库并创建数据等使用方法
Nov 27 MongoDB
MongoDB支持的索引类型
Apr 11 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
9个PHP开发常用功能函数小结
2011/07/15 PHP
在smarty中调用php内置函数的方法
2013/02/07 PHP
php创建图像具体步骤
2017/03/13 PHP
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
Node.JS段点续传:Nginx配置文件分段下载功能的实现方法
2018/03/12 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
vue中利用Promise封装jsonp并调取数据
2019/06/18 Javascript
9种方法优化jQuery代码详解
2020/02/04 jQuery
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
Python协程 yield与协程greenlet简单用法示例
2019/11/22 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
利用python3 的pygame模块实现塔防游戏
2019/12/30 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
python 绘制正态曲线的示例
2020/09/24 Python
荷兰包包购物网站:The Little Green Bag
2018/03/17 全球购物
Marlies Dekkers内衣美国官方网上商店:高端内衣品牌
2018/11/12 全球购物
财务工作个人求职的自我评价
2013/12/19 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
商务考察邀请函模板
2015/02/02 职场文书
2015年复活节活动总结
2015/02/27 职场文书
一个家长教育孩子的心得体会
2016/01/15 职场文书
高中历史教学反思
2016/02/19 职场文书
学者《孟子》名人名言
2019/08/09 职场文书
MySQL系列之十一 日志记录
2021/07/02 MySQL
一篇文章弄懂Python中的内建函数
2021/08/07 Python
浅谈Node的内存泄露问题
2022/05/06 NodeJs