JFINAL 我想在数据库里存json形式的对象如何更好的实现?

leavegee 发布于 2016/02/27 12:55
阅读 987
收藏 1

对于jfinal的存储我有几个疑问.

1.我生成的bean model,只要我有model的实例的引用,任何时候都可以更新修改保存它吗?

比如说程序一启动,我就把所有user表里的user全都查出来,放到了一个List里.这个List我放在Manager里全局访问.用户修改了昵称,我直接在这个Manager里的List里找到这个用户的model实例,并不是去BeanModel.dao.find出来.拿到这个实例后,我直接修改昵称,然后user.update.这样数据库里那条数据修改了吗?

2.我想在数据库里存复杂对象,比如user的一个字段里存这个user的背包物品数据.这个如何实现比较优雅?

3.我看到代码里有这么一句话

"默认 json 实现暂不支持 json 到 object 的转换,建议使用 active recrord 的 Generator 生成 base model," +
"再通过 me.setJsonFactory(new JacksonFactory()) 来支持");

不太理解,Generator生成base model我用了, 后面这个me是什么? me.setJsonFactory(new JacksonFactory()) 这句话放到哪里?能带来什么用处?

4.另外 另一个存储方法不知道jfinal支持不支持,或者是借助其他插件能否支持.

数据全都在内存里操作,所有数据都加在到内存(数据并不多),用对象的引用实例去操作数据,包括所有查询都是在内存中完成的,因为内存里的数据跟数据库是一模一样的,add,save,update等都是内存操作,但不是立刻进行数据库操作,而是定时批量往数据库里更新.比如说每5秒将内存里的变化,写入更新到数据库里.这样在一定条件下对于效率有很大提升.

这个支持吗?怎样才能这么做?

5.谢谢@JFINAL给大家带来这么好的框架.问题比较多都是围绕存储的.

加载中
0
JFinal
JFinal

1:如果 model 中 id 对应好了表中记录的id,那么 update() 方法就会更新那些被修改过的属性

2:user表中一个字段中存放背包物品数据直接违反了数据库第一范式:数据库表的每一列都是不可分割的基本数据项。是非常糟糕的做法,数据库设计最基本要求是满足第三范式,为了提升性能做优化时可适当违反第三范式,但第一、第二范式的违几乎没有容忍的余地。建议尽量满足第三范式,将背包数据做在独立的一张表中,再与user表建议关联。

3:也即不支持 JFinalJson.parse(...) 方法,看一下源代码即可了解。me.setJsonFactory(...)用来切换 json 实现类,便于切换和扩展满足用户需求的 json 实现。

4:既然数据量不大,直接操作数据是最佳选择,而不是在内存中保留副本,再额外添加同步方式来维持内存与数据库中数据的一致性,带来很多不必要的麻烦。如果执意要这样,也可以写点代码来实现。

5:感你的支持,如果觉得 jfinal 好用,多多介绍给有需要的人。建议对上面的问题直接用代码进行验证,是最有效的认知方式。

返回顶部
顶部