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 balancer的使用详解
Apr 30 MongoDB
Mongo服务重启异常问题的处理方法
Jul 01 MongoDB
常用的MongoDB查询语句的示例代码
Jul 25 MongoDB
阿里云服务器部署mongodb的详细过程
Sep 04 MongoDB
MongoDB日志切割的三种方式总结
Sep 15 MongoDB
MongoDB修改oplog大小的四种方法
Apr 11 MongoDB
SpringBoot集成MongoDB实现文件上传的步骤
Apr 18 MongoDB
MongoDB数据库之添删改查
Apr 26 MongoDB
详解MongoDB排序时内存大小限制与创建索引的注意事项
May 06 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
微博短链接算法php版本实现代码
2012/09/15 PHP
Zend studio文件注释模板设置方法
2013/09/29 PHP
PHP实现数组递归转义的方法
2014/08/28 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
PHP利用Socket获取网站的SSL证书与公钥
2017/06/18 PHP
js操作二级联动实现代码
2010/07/27 Javascript
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
Javascript加载速度慢的解决方案
2014/03/11 Javascript
jQuery 仿百度输入标签插件附效果图
2014/07/04 Javascript
超炫的jquery仿flash导航栏特效
2014/11/11 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
2015/09/12 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
JavaScript表单验证完美代码
2017/03/02 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
详解在vue-cli中使用路由
2017/09/25 Javascript
微信小程序地图绘制线段并且测量(实例代码)
2020/01/02 Javascript
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
Python AES加密实例解析
2018/01/18 Python
python实现12306抢票及自动邮件发送提醒付款功能
2018/03/08 Python
pandas带有重复索引操作方法
2018/06/08 Python
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
2020/02/28 Python
Python Sqlalchemy如何实现select for update
2020/10/12 Python
中国一家专注拼团的社交购物网站:拼多多
2018/06/13 全球购物
小区停车场管理制度
2014/01/27 职场文书
便利店促销方案
2014/02/20 职场文书
技校毕业生自荐信范文
2014/03/07 职场文书
大四毕业生自荐书
2014/07/05 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
先进党支部事迹材料
2014/12/24 职场文书
2016年学校党支部公开承诺书
2016/03/25 职场文书