首页 > 编程知识 正文

oracle查看session,redis怎么缓存sql数据

时间:2023-05-04 09:04:05 阅读:32500 作者:840

如果外部数据库连接,甚至数据库管理系统对数据库进行更改,但ibatis(mybatis )缓存尚未过期,是否会对数据库更改作出响应? 在这方面有什么好的解决办法吗?

简单来说,假设数据库系统为MySQL。 例如,一个Java的应用持久层框架使用ibatis(mybatis )调用数据库中的ID为100的记录,每隔500ms (毫秒)进行一次选择操作。 由于缓存时间很长,在这种情况下,假设此程序为I/O,但此时在Java APP应用程序中,每500毫秒对该记录进行select操作仍然有效! 这很郁闷。 ibatis(mybatis )缓存是否具有允许ibatis(mybatis )通过修改外部数据库连接或删除记录主动清除缓存的选项?

我也遇到了这个问题。 外部程序更改数据库后,mybatis中的会话不受影响。 要避免这种影响,只能关闭并打开会话。

但是,如果mybatis与spring集成,则表明dao继承了SqlSessionDaoSupport。 SqlSessionDaoSupport内部的sqlSession实现使用动态代理封装(每个select ) )查询会自动先运行openSession ),然后关闭) 请参阅下面的mybatis官方文档。)

官方文档摘要

mybatissqlsessionprovidesyouwithspecificmethodstohandletransactionsprogrammatically.butwhenusingmybatis-springyourbeanswill sionoraspringmanagedmapper.thatmeansthatspringwillalwayshandleyourtransactions。

You cannot callSqlSession.commit (、SqlSession.rollback )、orSqlSession.close )、 overaspringmanagedsqlsesion.if you ansupportedoperationexceptionexceptionwillbethrown.notethesemethodsarenotexposedininjectectectectetetion

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。