java - MyBatis SqlSession 没调用close关闭前锁死db文件,没法往里面insert数据
PHP中文网
PHP中文网 2017-04-17 16:13:21
0
1
740

环境:
tomcat + sqlite + mybatis

项目需求是这样的:需要做一个基于Web的Linux服务器监视系统,把服务器状态存入sqlite的db文件中(服务器用C++写的,服务器也是每隔一段时间用C++ 把数据插入到sqlite中),Web请求每隔一定时间查看数据库内容,并更新内容到网页上,所以自然就想到了用mybatis来与数据库互交。

都知道mybatis与数据库互交大概是遵从这样规范的(取自mybatis官方网站):

SqlSession session = sqlSessionFactory.openSession(); try { // following 3 lines pseudocod for "doing some work" session.insert(...); session.update(...); session.delete(...); session.commit(); } finally { session.close(); }

在try里面我就添加了查询数据的代码块,并返回相关json数据,都是正确的。但是我无意中发现,在session打开之后,没有close之前,C++ server 插入会失败(它两是并发的,两进程是共享一个db文件,一个是Servlet用MyBatis读取db文件,一个是C++写的server写db文件),这样会导致后面的步骤就全错了。有什么办法可以让C++ 在session close之后(意思就是同步等待一会儿)再进行insert操作,因为我从C++端无法判断是否在session过程中。

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复 (1)
大家讲道理

可以判断session是否为空,如果为空,连接关闭。

    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!