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 balancer的使用详解
Apr 30 MongoDB
MongoDB orm框架的注意事项及简单使用
Jun 20 MongoDB
SpringBoot整合MongoDB的实现步骤
Jun 23 MongoDB
MongoDB安装使用并实现Python操作数据库
Jun 28 MongoDB
Mongo服务重启异常问题的处理方法
Jul 01 MongoDB
MongoDB日志切割的三种方式总结
Sep 15 MongoDB
MongoDB连接数据库并创建数据等使用方法
Nov 27 MongoDB
MongoDB误操作后使用oplog恢复数据
Apr 11 MongoDB
Mongodb 迁移数据块的流程介绍分析
Apr 18 MongoDB
MongoDB数据库之添删改查
Apr 26 MongoDB
NoSQL优缺点与MongoDB数据库简介
Jun 05 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
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
2018/10/12 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
jquery动画3.创建一个带遮罩效果的图片走廊
2012/08/24 Javascript
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
JS实现浏览器状态栏显示时间的方法
2015/10/27 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
深入理解$.each和$(selector).each
2016/05/15 Javascript
纯js和css完成贪吃蛇小游戏demo
2016/09/01 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
解决vue跨域axios异步通信问题
2019/04/17 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
简单分析Python中用fork()函数生成的子进程
2015/05/04 Python
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
2017/12/12 Python
python之pandas用法大全
2018/03/13 Python
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
python 字典修改键(key)的几种方法
2018/08/10 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
2019/07/28 Python
python使用Matplotlib改变坐标轴的默认位置
2019/10/18 Python
利用Python优雅的登录校园网
2020/10/21 Python
python regex库实例用法总结
2021/01/03 Python
在校大学生的职业生涯规划书
2014/03/14 职场文书
新闻报道策划方案
2014/06/11 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
毕业论文答辩开场白和答辩技巧
2015/05/27 职场文书
《槐乡的孩子》教学反思
2016/02/20 职场文书
工程移交协议书
2016/03/24 职场文书
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers
JavaScript中isPrototypeOf函数
2021/11/07 Javascript
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL