1、在数据库的url中加入autoReconnect=true;
这只对mysql4以前的版本有效。在最新的mysql中是无效的
2、在每次调用getSession()方法时判断 session.isClosed()是否为真,若为真则调用session.reconnect();
3、不使用Hibernate内置的连接池,改用C3P0连接池,这个连接池会自动处理数据库连接被关闭的情况 (也可以使用其他的连接池 比如proxool)
ssh application.xml文件中的配置 ${jdbc.driver} ${jdbc.url} ${jdbc.username} ${jdbc.password}
主要的配置参数减少连接池内连接的生存周期,使之小于上一项中所设置的 wait_timeout 的值。 =============================================================== 1 20 18 2 0 2 18 30 true false ${jdbc.driver} ${jdbc.url} ${jdbc.username} ${jdbc.password}
cmd进入mysql >mysql -uroot -p 输入密码 登录mysql
查看mysql 的参数设置 show variables like '%timeout%';
************** 修改 wait_timeout的参数
直接在my.ini中最下面添加 interactive_timeout=604800; wait_timeout=604800; 注意: 要在控制面板 ---管理工具----服务中停止mysql 再重新启动
proxool 连接池的效果较好 配置方法 1 下载jar包 proxool-0.9.0RC2.jar (其余的版本有bug proxool-0.9.1 在配置属性houseKeepingSleepTime时会出现异常 原因是源码中的set方法 int 到long强转 )
2 在application.xml配置 com.mysql.jdbc.Driver (user 和 password 属性不起作用 但不能不写)