如题,请问实际项目里 @Cacheable 、@CachePut 、@CacheEvict 这几个注解,通常是写在dao层,还是service层,还是controller层的方法上?我个人感觉应该写在dao层是最好的,因为缓存的主要作用是减轻数据库的压力,service和controller层会掺杂其他业务,并且会涉及多个表,而dao层是和数据库表一一对应的。大家看看我想的对不对,有错误请指出,谢谢!
如题,请问实际项目里 @Cacheable 、@CachePut 、@CacheEvict 这几个注解,通常是写在dao层,还是service层,还是controller层的方法上?我个人感觉应该写在dao层是最好的,因为缓存的主要作用是减轻数据库的压力,service和controller层会掺杂其他业务,并且会涉及多个表,而dao层是和数据库表一一对应的。大家看看我想的对不对,有错误请指出,谢谢!
3 回答3.6k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
2 回答3.2k 阅读
1 回答2.2k 阅读✓ 已解决
1 回答1.9k 阅读✓ 已解决
2 回答1.8k 阅读
1 回答778 阅读✓ 已解决
一般来说是放在Service层。
Dao层的话,一般使用MyBatis,本身有一级、二级缓存。
Controller层的话,他的职责主要是接收Web请求参数,简单处理后调用内部Service服务。尽量让它存粹一些。
Service层才是真正的业务层,这一层才是有业务含义的输出。这种输出才是比较有缓存意义的东西。
不过这种注解式的缓存局限性比较大,一般都会手动处理缓存。