咨询下jfinal 缓存的问题

文档以及看完了,项目也写了一点了。

用的Db + record模式,感觉还不错挺简单的,entity mapper service都省了,但是后期不知道维护好不好。能重用的数据库交互都放到service中了,供app 和 controller调用

现在想问下那个Db缓存的使用,配置好ehcache后使用Db.findByCache(…),想问下各位这个缓存的内容会自动进行更新吗,还是需要手动更新,如果是关联查询呢,那刷新的依据是什么?我看文档里面并没有细说这个缓存的问题、想请教下大家

评论区

JFinal

2017-09-03 22:14

首先要强调一点, service 绝对不能省,现在就连 jfinal 官网的 demo 将添加了 Service 层,就是担心大家养成坏习惯

如果省去 service,后期维护将是一场噩梦,而这与 jfinal 毫无关系,使用任何 MVC 框架,只要是省去 service,全都会是噩梦

不管业务逻辑是不是被重用,全部写在 service 层,没有任何商量的余地

ehcache 的缓存不会自动更新,需要自己采用一定的策略通过相关 api 删除缓存或更新缓存,关于缓存,看一下 ehcache 文档即可,jfinal 仅仅是对 ehcache 做了一层极薄的封装

自导自演

2017-09-04 09:56

@JFinal 我把一些业务给抽取出来,在controller中调用service,但是jfinal中没有注入这个概念,我是用的 private UserService userService = Duang.duang(UserServiceImpl.class); 这样duang出来的不是单例的吧,不知道多个controller中duang效率怎么样

自导自演

2017-09-04 10:16

@JFinal 我发现controller也不是单例。每次请求都是一个全新的实例

JFinal

2017-09-04 10:35

@自导自演 单例问题看一下这里:
https://www.oschina.net/question/197668_221395

JFinal

2017-09-04 10:36

如果你的 service 是无状态的,在 controller 中用一个 static 就可以了:
private static UserService srv = Duang.duang(UserServiceImpl.class);

凉茶冰

2018-02-28 17:21

@JFinal 目前Jfinal是否有类似mybatis的一级缓存及二级缓存的功能?

热门反馈

扫码入社