private void executeSQL(String sql) {
JDBCManager jdbc = null;
try {
jdbc = new JDBCManager("hibernate.cfg.xml");
Connection conn = jdbc.getConnection();
PreparedStatement stat = conn.prepareStatement(sql);
stat.execute();
} catch (SQLException e) {
e.printStackTrace();
LOG.error(e);
} finally {
jdbc.close();
}
}这个方法 现在 没有关闭数据库练级 conn.close(); stat.close(); 也没关闭。
关闭好 还是不关闭好?
JDBCManager jdbc = null;
try {
jdbc = new JDBCManager("hibernate.cfg.xml");
Connection conn = jdbc.getConnection();
PreparedStatement stat = conn.prepareStatement(sql);
stat.execute();
} catch (SQLException e) {
e.printStackTrace();
LOG.error(e);
} finally {
jdbc.close();
}
}这个方法 现在 没有关闭数据库练级 conn.close(); stat.close(); 也没关闭。
关闭好 还是不关闭好?
映射数据库 检索数据就不是很快,所以你在用的时候就打开链接,用完了就关闭
,以免数据池达到了最高链接数,导致链接失败的可能
映射数据库 检索数据就不是很快,所以你在用的时候就打开链接,用完了就关闭
,以免数据池达到了最高链接数,导致链接失败的可能
不过我觉得 stat.close(); 这个还是要关闭的 。
现在 的情况是 如果 stat.close(); 这句不调用 处理的数据量大 就会发生死锁,调用这句后不会死锁。
conn.close(); 一直没调用
数据库链接池可以做到。服务器 启动的时候它会默认进行几个数据库的连接,用的时候会从池中取空余的连接。
当所有连接都被使用它就会NEW一个新的连接。
所以不建议 每次都打开和关闭操作,对数据库来说是一个压力。
connection,它的close()方法已经被重写,调用它的close()方法,其实是把
connection放回数据源连接池中
也觉得奇怪 所以来问问