前一段时间朋友用hibernate+mysql整了一个应用,出现tomcat放一夜,mysql连接出现错误的情况,具体的错误信息忘记了。
在网上查找一下,找到了这个帖子,还有就是这个了;原来Mysql在经过8小时不使用后会自动关闭已打开的连接,摘录原文如下:
5.4. |
I have a servlet/application that works fine for a day, and then stops working overnight
|
|
MySQL closes connections after 8 hours of inactivity. You either need to use a connection pool that handles stale connections or use the "autoReconnect" parameter (see "Developing Applications with MySQL Connector/J").
Also, you should be catching SQLExceptions in your application and dealing with them, rather than propagating them all the way until your application exits, this is just good programming practice. MySQL Connector/J will set the SQLState (see java.sql.SQLException.getSQLState() in your APIDOCS) to "08S01" when it encounters network-connectivity issues during the processing of a query. Your application code should then attempt to re-connect to MySQL at this point.
|
现把具体方法贴出来,以供大家共享.
方法一:
设置你的MYSQL数据库:wait_timeout=24*60*60<秒>,把它的值设置大一点,呵呵
方法二:
配置Hibernate C3p0连接池,配置如下:
<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.max_size">20</property>
<property name="c3p0.min_size">5</property>
<property name="c3p0.timeout">20</property>
<property name="c3p0.max_statements">100</property>
<property name="c3p0.idle_test_period">120</property>
<property name="c3p0.acquire_increment">2</property>
注意这里标红的部分,要设置c3p0.timeout的值小于MySql的wait_timeout的值,这样才行,要不还会出现异常.
这次是一个教训,所以不论从稳定还是性能的考虑,都应该选择相对更加成熟的连接池。
分享到:
相关推荐
连接MySQL数据库是进行数据操作的第一步,这通常涉及到使用特定的API或工具。以下是对MySQL连接数据库涉及的知识点的详细说明: 1. **连接方式**: - **命令行客户端**:这是最基础的连接方式,通过MySQL的命令行...
对于文档`Java.doc`和`Java.ppt`,它们可能包含了更深入的Java编程和MySQL数据库管理的知识,比如Java多线程、异常处理、MySQL索引优化、事务处理等内容。如果需要深入了解,建议查看这些文档以获取详细信息。 总的...
- **资源管理**:在使用JDBC或其他数据库连接技术时,务必妥善处理资源(如`Connection`、`Statement`、`ResultSet`)的关闭和异常处理,避免资源泄露和程序异常。 通过上述步骤,您可以顺利地在IntelliJ IDEA中...
7. 关闭Session和SessionFactory:操作结束后,关闭Session以释放资源,SessionFactory在不再使用时关闭。 四、Hibernate jar包 在“hibernate的jar包”中,通常包括以下组件: 1. hibernate-core.jar:Hibernate的...
MySQL+Hibernate 连接空闲8小时自动断开问题解决方案 知识点1: Hibernate 的连接池机制 在 Hibernate 中,默认情况下 使用的是 DriverManagerConnectionProvider,这是一个简单的连接池机制。它将打开的连接缓存在...
在实际项目中,可能还需要处理异常,比如`SQLException`,以及考虑数据库连接池的使用,以提高应用性能。此外,根据描述,所有操作都在控制台进行,没有图形用户界面。对于更复杂的系统,可以考虑使用Swing或JavaFX...
Java连接MySQL数据库是Java...总之,Java连接MySQL数据库涉及的知识点包括JDBC接口、数据库连接、SQL语句执行、结果集处理、连接池以及异常处理。理解并熟练运用这些概念,可以让你在Java数据库开发中更加得心应手。
在本实践项目中,我们将探讨如何使用纯Java代码来连接MySQL数据库。这是一项基础但至关重要的技能,对于任何想要在Java应用程序中与数据库交互的开发者来说都是必要的。MySQL是一个广泛使用的开源关系型数据库管理...
Java连接MySQL数据库主要依赖于Java Database Connectivity (JDBC) API,这是一个Java编程接口,允许Java应用程序与各种数据库进行交互。本教程将详细讲解如何通过JDBC驱动程序建立Java与MySQL数据库之间的连接。 ...
JDBC连接MySQL数据库通常涉及以下几个核心步骤: 1. **加载数据库驱动**:首先,需要在项目环境中引入对应数据库的JDBC驱动包。对于MySQL,这通常是`mysql-connector-java`的JAR文件。将其添加到项目的类路径...
数据库连接是IT行业中一个至关重要的概念,特别是在开发与数据交互的应用程序时。本文将深入探讨几种常见的数据库连接方法,包括源码示例和相关文档,旨在帮助开发者更好地理解和实现数据库的连接。 首先,我们来看...
7. **关闭资源**: 示例中没有显示关闭数据库连接和Statement对象的部分,但在实际应用中,我们需要在完成数据库操作后,调用`close()`方法释放这些资源,防止内存泄漏。例如,`connect.close()`和`stmt.close()`。 ...
另外,合理使用连接池(如C3P0、HikariCP)可以显著提升应用性能,避免频繁地打开和关闭数据库连接。 7. **安全注意事项**:避免在代码中硬编码数据库凭证,可以使用环境变量或配置文件来存储敏感信息。使用最新的...
C3P0的主要目标是提高数据库连接的效率和稳定性,通过复用已建立的数据库连接,避免频繁地创建和关闭连接,从而降低系统开销。C3P0支持多种数据库,包括MySQL、Oracle、PostgreSQL等,并且与Hibernate、Spring等框架...
- **Connection Pool**:为了提高性能,项目通常使用连接池管理数据库连接,如C3P0或HikariCP,它们可以有效地复用数据库连接,避免频繁创建和关闭连接。 4. **实体类和对象映射**: - **ORM(Object-Relational ...
- **连接超时与重试策略**:确保在网络不稳定时,数据库连接能够正常恢复。 7. **性能优化**: - **缓存机制**:可以实现查询结果缓存,减少对数据库的访问。 - **读写分离**:支持主从复制环境下的读写分离,...
MySQL数据库驱动是连接Java应用程序与MySQL数据库的关键组件。在Java中,这个驱动通常指的是JDBC(Java Database Connectivity)驱动,它允许Java代码通过标准接口与MySQL数据库进行交互。以下是关于MySQL数据库驱动...
- 为了提高性能和资源利用率,使用连接池(如C3P0、HikariCP、Apache DBCP等)管理数据库连接。 - 配置连接池的初始化大小、最大连接数、超时时间等参数。 9. **DAO(Data Access Object)设计模式** - DAO模式...
在IT行业中,数据库连接管理是应用系统开发中的关键环节,特别是在使用Java进行企业级开发时。本主题将深入探讨如何整合Hibernate ORM框架与Spring框架,并利用Apache DBCP(BasicDataSource)连接池来高效地管理...
总结起来,这个Java连接MySQL数据库的实例代码展示了如何使用JDBC API进行基本的数据库连接操作。了解这些基础,你可以构建更复杂的数据库操作,包括查询、插入、更新和删除数据等。同时,还要熟悉SQL语言,以便编写...