2016-08-29 12:25
@nbjgl @飞羽 我个人对缓存的使用的基本路子是:
1:先不使用缓存,完全无视缓存,用数据库保存数据,并实现功能
2:在需要缓存加速的地方,引入缓存
3:缓存只在 service 层中引入,service 层以外完全不知道缓存的存在
这样做的好处是:
1:以数据库为核心,缓存只在适当的地方做辅助,数据可以持久化,避免了缓存断电丢失的情况。数据库存放数据更加结构化,便于管理,而缓存结构化差,不易于管理
2:缓存只在业务层中,业务知道自己如何管理缓存,例如某个业务的 getList(...) 方法使用了缓存,那么在这个业务的 delete()、update() 方法就可以精准地更新缓存,缓存管理统一在了当前的业务层之中,不会散布到各处,易于管理,不易出错
3:缓存对于业务的调用者完全透明
2016-08-29 12:11
@nbjgl 没那么麻烦,我直接贴出 remind 表的设计
CREATE TABLE `remind` (
`accountId` int(11) NOT NULL COMMENT '用户账号id,必须手动指定,不自增',
`referMe` int(11) NOT NULL DEFAULT '0' COMMENT '提到我的消息条数',
`message` int(11) NOT NULL DEFAULT '0' COMMENT '私信条数,未来考虑加粉丝增加个数',
PRIMARY KEY (`accountId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2016-08-27 15:50
@455386896 在 public void afterJFinalStart() 中调用是最好的,注意看手册中的这个方法的用法。
此外,这样配置以后,一定要注意使用 ${obj.name} 的形式,而不能使用 ${obj.getName()}
2016-08-27 12:10
@455386896 前面说过了,用 ModelRecordElResolver.setResolveBeanAsModel(true) 可立即解决
2016-08-27 11:40
@455386896 是用的 jfinal 2.2 并且为 model 生成了 getter、setter 方法吧? 如果是这样的话,那么 ${obj.userName} 确实获取不到,因为 getUserName() 这个方法并不存在