[实训]web项目出现高频度读写数据库时失败的情况

在编写servlet的时候,出现了这么个情况。就是在大量读写数据库的时候,出现部分请求无法访问到数据库的情况。

使用了jvisualvm等java提供的工具检查之后,发现java的mysql连接占用内存很大,猜测可能是数据库连接使用后没有断开的情况。

于是,我在dao里对数据库操作的里面变了种写法如下:

        Session session = this.getSession();
        Transaction tx = session.beginTransaction();
        try {
            tx.begin();
            session.save(businessService);
            session.flush();
            tx.commit();
            session.close();
            // releaseSession(session);
            System.out.println("businessService saving...");
            return true;
        } catch (DataAccessException e) {
            e.printStackTrace();
            tx.rollback();
            return false;
        } finally {
            if (session.isOpen()) {
                session.close();
            }
            tx = null;
            session = null;
        }

原来是没有flush的,但加了flush后还不行。于是最终加上了final来关闭连接,测试之后发现问题解决了。

所以,以后有进行关闭流或者连接操作的时候,一定要记得使用finally来关闭,否则会出问题。至于什么原因导致的连接关闭不成功,现在还不是很清楚,mark一下,希望大神能解答一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值