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


猜你喜欢
- 前言SVG可以算是目前最最火热的图像文件格式了,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形。它是
- 在IE中,在使用checkbox或radio时,你会发现有时不能通过CheckBoxObject.checked = true或CheckB
- 这几天忙个合作,开发iPhone版校友录。用了很久的iPhone,为它量身定制一套页面还是头一次,好在限制不是很多,会写html基本呈现就不
- 本文实例为大家分享了python OpenCV实现答题卡识别判卷的具体代码,供大家参考,具体内容如下完整代码:#导入工具包import nu
- 编译环境:ubuntu17.04 Python3.5所需库:numpy、scipy、matplotlib下面是理想平面的辐射强度计算(课程大
- IE测试通过,FF有点小BUGCls_Leibie.asp代码如下:<% '数据库字段为类属性,添加、删除、修改、操
- 功能描述数据库间数据同步方式很多,在上篇博文中有总结。本文是用py程序实现数据同步。A数据库中有几十张表,要汇聚到B数据库中,且表结构一致,
- 考察对于知识的理解,除了实际的代码运用,还有一种方法就是问答类的题型。不同于普通的概念叙述,小编认为即使是面试题也会带有一些数学题目的影响,
- 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的。比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信
- fixHtmlTag version 0.2 这个版本解决了上次遗留的问题,即就近闭合和嵌套闭合问题。具体可以看代码的注释。 <?ph
- springboot配置文件抽离,便于服务器读取对应配置文件,避免项目频繁更改配置文件,影响项目的调试与发布1.创建统一配置中心项目coni
- 1. 创建用户模块应用创建应用users$ python manage.py startapp users 2. 注册用户模块应用
- 简介说明本文用示例介绍Vuex的五大核心之一:actions。官网Action | VuexAPI 参考 | Vuexactions概述说明
- 本文实例为大家分享了Python Web框架Tornado运行和部署的详细内容,供大家参考,具体内容如下一、运行和部署因为Tornado内置
- 1. 项目背景在python 即时网络爬虫项目启动说明中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间,从而我们发起了这个项目,把程
- 前言在接口测试的过程中,经常会遇到有些接口需要在登录的状态下才能请求,否则会提示请登录,那么怎样解决呢?我们可以通过Cookie绕过登录,其
- 游戏资源包的创建、修改、读取等操作。注意:资源包为游戏等需要快速读取的场景使用,所以并未对文件进行分块操作,都是一整个读取压缩的,所以需要自
- 前言不知各位朋友现在在 web 端进行登录的时候有没有注意一个变化,以前登录的时候是直接账号密码通过就可以直接登录,再后来图形验证码,数字结
- 1.点算子点算子是两个像素灰度值间的映射关系,属于像素的逐点运算,相邻像素不参与运算。点算子是最简单的图像处理手段,如:亮度调整、对比度调整
- Python的优点和缺点本节内容如下:Python的优点Python的缺点使用Python的知名网站Python的优点1. 简单 Pytho