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

作者:孙来疯 时间:2024-01-17 07:04:16 

目录
  • Ⅰ. 简介

  • Ⅱ. 注意事项

  • Ⅲ. 使用方法

  • Ⅳ. 教程

首先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

来源:https://juejin.cn/post/6972514898274156575

标签:MongoDB,orm框架
0
投稿

猜你喜欢

  • 解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题

    2022-10-24 05:34:54
  • Python 文件读写操作实例详解

    2023-08-04 10:41:53
  • python 基于opencv操作摄像头

    2023-03-06 08:02:31
  • Mysql的基础使用之MariaDB安装方法详解

    2024-01-14 15:03:46
  • JS 实现请求调度器

    2024-04-22 22:37:24
  • Python 的Json 模块编码详解

    2023-03-19 08:29:15
  • Python语言描述KNN算法与Kd树

    2021-07-24 05:10:35
  • iframe全跨域高度自适应解决方案

    2008-12-21 16:16:00
  • SPSS连接mysql数据库的超详细操作教程

    2024-01-21 13:49:25
  • python 格式化输出百分号的方法

    2023-07-17 08:23:27
  • python sys模块使用方法介绍

    2021-11-24 10:02:11
  • Oracle 数据库 临时数据的处理方法

    2009-07-02 11:48:00
  • Golang爬虫框架colly使用浅析

    2024-02-06 23:28:06
  • Python使用pylab库实现画线功能的方法详解

    2021-02-03 18:26:07
  • Python运算符教程之逻辑门详解

    2021-05-17 04:32:54
  • PHP json格式和js json格式 js跨域调用实现代码

    2023-11-22 05:20:18
  • SQLPlus命令操作用法详解

    2024-01-27 23:00:18
  • python 实现图片上传接口开发 并生成可以访问的图片url

    2021-03-19 01:02:02
  • SQL Server上进行表设计时表的主键设计问题

    2010-06-24 16:10:00
  • 常见前端面试题及答案

    2023-07-10 08:57:30
  • asp之家 网络编程 m.aspxhome.com