`

(转)ibatis使用mysql,数据库超时自动关闭问题的解决

阅读更多
iBatis自己带了一个simple的数据库连接池,基本的功能都有。但是在处理部分数据库(比如mysql)的连接空闲时间太长(mysql是8小时)自动超时的时候,就比不上象c3p0这样的连接池软件了(c3p0能自动处理数据库连接被关闭的情况)。
我目前采用的方法是iBatis本身提供的一种算得上是取巧的办法,基本思想就是每隔一段时间往数据库发一条查询语句,这样使得数据库空闲时间不会太长,而使得其自动关闭。
方法是在SqlMapConfig.xml的dataSource进行如下配置:
<dataSource type="SIMPLE">
    <property name="JDBC.Driver" value="${jdbc.driverClassName}"/>
    <property name="JDBC.ConnectionURL" value="${jdbc.url}"/>
    <property name="JDBC.Username" value="${jdbc.username}"/>
    <property name="JDBC.Password" value="${jdbc.password}"/>
    <property name="Pool.PingEnabled" value="true"/>
    <property name="Pool.PingQuery" value="select 1"/>
    <property name="Pool.PingConnectionsOlderThan" value="0"/>
    <property name="Pool.PingConnectionsNotUsedFor" value="3600000"/>
</dataSource>
开始的3行是关于数据库连接信息的,不需要说明了。
Pool.PingEnabled:是用于设置开启是否允许检测连接状态
Pool.PingQuery:是用于检测连接的查询语名,当然是越简单越好
Pool.PingConnectionOlderThan:对持续连接时间超过设定值(毫秒)的连接进行检测,我将其设置为0(不进行此项检测),否则,iBatis在超过这个时间后,执行每个sql以前检测连接,对于性能可能会有一定的影响。
Pool.PingConnectionsNotUsedFor:对空闲超过设定值(毫秒)的连接进行检测,我设置为1小时(mysql缺省的关闭时间是8小时)

当然,还有一个办法是使用c3p0这样的连接池
但是需要自己写一部分代码,实现以下接口:
public interface DataSourceFactory {
public void initialize(Map map);
public DataSource getDataSource();
}
分享到:
评论

相关推荐

    Ibatis死锁

    标题 "Ibatis死锁" 指的是在使用Ibatis框架进行数据库操作时出现的死锁问题。Ibatis是一款轻量级的Java持久层框架,它允许开发者将SQL语句直接写在配置文件中,提供了灵活的数据访问层。死锁是并发控制中的一种常见...

    ibatis事务控制案例

    在Java应用中,Ibatis与SQL Server、MySQL等数据库配合,可以实现高效的数据库访问和事务处理。 **1. 什么是事务** 事务是一组数据库操作,这些操作被视为一个整体,要么全部成功,要么全部回滚。在数据库管理系统...

    spring boot配置MySQL数据库连接、Hikari连接池和Mybatis的简单配置方法

    Spring Boot 配置 MySQL 数据库连接、Hikari 连接池和 MyBatis 的简单配置方法 Spring Boot 是一个基于 Java 的框架,用于快速构建生产级别的应用程序。作为一个现代化的框架,Spring Boot 提供了许多便捷的配置...

    mybatis 对clob类型转换

    在使用MyBatis框架进行数据操作时,我们可能会遇到CLOB类型数据的读写问题,尤其是在转换和插入数据库时。本篇将详细探讨MyBatis中处理CLOB类型数据的转换以及解决可能出现的异常情况。 首先,MyBatis是Java中的一...

    Spring+iBatis+JOTM实现JTA事务

    - 使用`PlatformTransactionManager`接口配置Spring的声明式事务管理,设置事务传播属性、隔离级别和超时时间。 4. **iBatis配置** - 配置iBatis的SqlSessionFactory,指定数据源和映射文件。 - 编写SQL映射文件...

    struts2+spring+ibatis 增删改查例子(2)

    在这个例子中,它们被用来实现一个基本的数据管理功能,包括增、删、改、查操作,并且基于MySQL数据库进行数据存储。Apache DBCP是一个连接池库,用于优化数据库连接资源的管理和复用。 首先,Struts2作为表现层...

    关于DBCP数据库连接池配置整理宣贯.pdf

    DBCP(DataBase Connection Pool)是Apache组织提供的一款Java数据库连接池组件,它是Tomcat服务器默认使用的连接池组件。数据库连接池技术的主要目的是提高系统性能,减少数据库操作中的资源开销,通过预先创建并...

    基于java的DataBuffer在Java中使用ADO.NET.zip

    为了解决这个问题,Java提供了数据库连接池,如Apache Commons DBCP、C3P0、HikariCP等。数据库连接池可以预先创建并维护一定数量的数据库连接,应用程序需要时可以从池中获取,用完后归还,这样可以大大提高效率。 ...

    IT技术文章示例

    Code generation是指使用自动化工具或编程语言来生成代码的过程,这可以极大地提高开发效率,减少出错机会。在Java中,可以通过注解处理器、模板引擎(如Freemarker)或者元编程框架(如CodeHawk)实现代码生成。...

    proxool源码

    Proxool是一个开源的、基于Java的数据库连接池,它在2003年由iBatis(现在的MyBatis)团队开发并维护,旨在提供一个轻量级、高效的数据库连接管理解决方案。在深入研究Proxool源码之前,我们先了解一下数据库连接池...

    Spring下配置几种常用连接池

    在Spring框架中,数据库连接管理是非常关键的一部分,有效的连接池配置可以提高应用的性能和稳定性。本文将深入探讨如何在Spring环境下配置几种常用...正确配置和使用连接池是提升Spring应用数据库操作效率的关键步骤。

    proxool 连接池实例

    Proxool是由iBatis团队开发的,其设计目标是提供一个简单易用、功能全面且性能优异的数据库连接池。与C3P0、DBCP、HikariCP等其他连接池相比,Proxool在小型项目或测试环境中表现出色,尤其适合那些对资源管理和性能...

    自整理Java关于基础和框架的面试题

    - 使用`mysql`命令导入数据库。 ##### jdbc分段批量提交的时候出现异常怎么处理? - 使用事务管理,确保数据的一致性。 - 对异常进行捕获和处理。 ##### jdbc批量处理数据 - 使用`PreparedStatement`的`addBatch()`...

    java面试知识

    ### Java面试知识详解 #### 基础篇 ##### JDK常用的包 - **java.lang**:包含所有编程必需的基础类,如String、Math等。 - **java.util**:提供了大量...##### Ajax请求Session超时问题 - **解决方法**: - 设置...

    springBoot application.properties基础配置大全.pdf

    Spring Boot是一个广泛使用的Java框架,用以简化新Spring应用的初始搭建以及开发过程。它使用特定的配置文件`application....通过调整这些属性,开发者可以快速地适应不同的部署环境,以及解决开发中遇到的各种问题。

    java必备知识点大全.pdf

    Ajax请求Session超时问题:Ajax请求可能会遇到Session超时的问题,需要特别处理。 Java线程池概述:Java线程池可以重用一组线程来执行多个任务,提高程序性能。 OSCache概述:OSCache用于将频繁访问的数据缓存在...

Global site tag (gtag.js) - Google Analytics