首先spring自带了mongodb的orm,spring data mongodb,但是这个框架非常难用,最令人抓狂的是每个文档都要带一个 _class 字段,因为这个是string的,所以占用不少空间,而且去除也比较麻烦。
在这里我推荐一下基于MongoDB官方提供的orm的轻量级封装的 zfoo orm 框架,只对官方提供的进行了简单的封装,还做了一些官方不支持的语法校验。
OrmContext.getAccessor().insert(obj)
OrmContext.getAccessor().delete(obj);
OrmContext.getAccessor().update(obj);
<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> {
}