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的详细过程
Sep 04 MongoDB
SpringBoot系列之MongoDB Aggregations用法详解
Feb 12 MongoDB
MongoDB使用场景总结
Feb 24 MongoDB
剖析后OpLog订阅MongoDB的数据变更就没那么难了
Feb 24 MongoDB
MongoDB误操作后使用oplog恢复数据
Apr 11 MongoDB
MongoDB支持的索引类型
Apr 11 MongoDB
SpringBoot集成MongoDB实现文件上传的步骤
Apr 18 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 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
joomla内置的表单验证功能使用方法
2010/06/11 PHP
php实现批量压缩图片文件大小的脚本
2014/07/04 PHP
php获取四位字母和数字的随机数的实现方法
2015/01/09 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
复制本贴标题和地址的js代码
2008/07/01 Javascript
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
JS实现模拟风力的雪花飘落效果
2015/05/13 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
JavaScript实现斗地主游戏的思路
2016/02/29 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
2018/08/28 Javascript
微信小程序中上传图片并进行压缩的实现代码
2018/08/28 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
100行代码实现vue表单校验功能(小白自编)
2019/11/19 Javascript
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
2020/06/02 Python
python框架flask入门之路由及简单实现方法
2020/06/07 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
高中毕业自我鉴定
2013/12/16 职场文书
期末自我鉴定
2014/01/23 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
质量月活动总结
2014/08/26 职场文书
欢送领导祝酒词
2015/08/12 职场文书
初中历史教学反思
2016/02/19 职场文书
导游词之舟山普陀山
2019/11/06 职场文书
在redisCluster中模糊获取key方式
2021/07/09 Redis