spring with c3p0

本文详细介绍了在Spring框架中使用C3P0连接池的配置方法,并解决了初次加载时可能出现的数据库连接异常问题。通过正确的配置示例,帮助读者避免常见的错误。
参考:(willpower88兄的blog) http://www.blogjava.net/willpower88/archive/2007/01/10/92928.html

当我spring中用c3p0时第一次老出现
org.hibernate.exception.JDBCConnectionException: could not execute query
刷新后就不会。一番折腾后直接用<property name="" value="" />就可以了。随后找到willpower88兄的blog他总结得很好。

环境:
spring 2.0
c3p0-0.9.0.4

spring配置文件如下(引用willpower88兄的,注释掉的都有问题的):

< bean  id ="dataSource"  class ="com.mchange.v2.c3p0.ComboPooledDataSource"    destroy-method ="close" >
         
< property  name ="driverClass"  value ="com.mysql.jdbc.Driver"   />
         
< property  name ="jdbcUrl"  value ="jdbc:mysql://localhost/test" />             
         
< property  name ="user"  value ="root" />
         
< property  name ="password"  value ="" />
          
         
< property  name ="minPoolSize"  value ="2" />
         
< property  name ="maxPoolSize"  value ="20" />
         
< property  name ="maxIdleTime"  value ="1800" />
         
< property  name ="acquireIncrement"  value ="2" />
         
< property  name ="maxStatements"  value ="0" />
         
< property  name ="initialPoolSize"  value ="3" />
         
< property  name ="idleConnectionTestPeriod"  value ="1800" />
         
< property  name ="acquireRetryAttempts"  value ="30" />
         
< property  name ="breakAfterAcquireFailure"  value ="true" />
         
< property  name ="testConnectionOnCheckout"  value ="false" />
         
         
<!--  
         <property name="properties">
          <props>              
              <prop key="c3p0.minPoolSize">1</prop> 
              <prop key="c3p0.maxPoolSize">10</prop> 
              <prop key="c3p0.maxIdleTime">1800</prop>              
              <prop key="c3p0.acquireIncrement">2</prop> 
              <prop key="c3p0.maxStatements">0</prop> 
              <prop key="c3p0.initialPoolSize">2</prop>
              <prop key="c3p0.idleConnectionTestPeriod">1800</prop>
              <prop key="c3p0.acquireRetryAttempts">30</prop>
              <prop key="c3p0.breakAfterAcquireFailure">true</prop>
              <prop key="c3p0.testConnectionOnCheckout">true</prop>
              <prop key="user">root</prop>
              <prop key="password">999999</prop>
              
          </props>
         </property>
        
-->       
</ bean >

<!--  Hibernate SessionFactory  -->
< bean  id ="sessionFactory"  class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
  
< property  name ="dataSource"  ref ="dataSource" />
  
< property  name ="mappingDirectoryLocations" >
      
< list >
   
< value > classpath:/com/licaionline/domain/ </ value >
      
</ list >
  
</ property >
  
< property  name ="hibernateProperties" >
   
< props >
     
< prop  key ="hibernate.dialect" > org.hibernate.dialect.MySQLDialect </ prop >
     
< prop  key ="hibernate.show_sql" > true </ prop >
     
< prop  key ="hibernate.generate_statistics" > true </ prop >
     
< prop  key ="hibernate.connection.release_mode" > auto </ prop >                       
     
< prop  key ="hibernate.autoReconnect" > true </ prop >
     
< prop  key ="hibernate.cglib.use_reflection_optimizer" > true </ prop >
<!--  
    <prop key="hibernate.useUnicode"></prop> 
    <prop key="hibernate.characterEncoding"></prop>
    <prop key="hibernate.default-lazy-init"></prop>
    <prop key="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop>     
 
-->
                                
<!--
    <prop key="hibernate.c3p0.acquire_increment">2</prop>
    <prop key="hibernate.c3p0.idle_test_period">1800</prop>
    <prop key="hibernate.c3p0.timeout">1800</prop>
    <prop key="hibernate.c3p0.max_size">30</prop>
    <prop key="hibernate.c3p0.min_size">2</prop>
    <prop key="hibernate.c3p0.max_statements">50</prop>
-->          
   
</ props >
  
</ property >
</ bean >
成都市作为中国西部地区具有战略地位的核心都市,其人口的空间分布状况对于城市规划、社会经济发展及公共资源配置等研究具有基础性数据价值。本文聚焦于2019年度成都市人口分布的空间数据集,该数据以矢量格式存储,属于地理信息系统中常用的数据交换形式。以下将对数据集内容及其相关技术要点进行系统阐述。 Shapefile 是一种由 Esri 公司提出的开放型地理空间数据格式,用于记录点、线、面等几何要素。该格式通常由一组相互关联的文件构成,主要包括存储几何信息的 SHP 文件、记录属性信息的 DBF 文件、定义坐标系统的 PRJ 文件以及提供快速检索功能的 SHX 文件。 1. **DBF 文件**:该文件以 dBase 表格形式保存与各地理要素相关联的属性信息,例如各区域的人口统计数值、行政区划名称及编码等。这类表格结构便于在各类 GIS 平台中进行查询与编辑。 2. **PRJ 文件**:此文件明确了数据所采用的空间参考系统。本数据集基于 WGS84 地理坐标系,该坐标系在全球范围内广泛应用于定位与空间分析,有助于实现跨区域数据的准确整合。 3. **SHP 文件**:该文件存储成都市各区(县)的几何边界,以多边形要素表示。每个多边形均配有唯一标识符,可与属性表中的相应记录关联,实现空间数据与统计数据的联结。 4. **SHX 文件**:作为形状索引文件,它提升了在大型数据集中定位特定几何对象的效率,支持快速读取与显示。 基于上述数据,可开展以下几类空间分析: - **人口密度评估**:结合各区域面积与对应人口数,计算并比较人口密度,识别高密度与低密度区域。 - **空间集聚识别**:运用热点分析(如 Getis-Ord Gi* 统计)或聚类算法(如 DBSCAN),探测人口在空间上的聚集特征。 - **空间相关性检验**:通过莫兰指数等空间自相关方法,分析人口分布是否呈现显著的空间关联模式。 - **多要素叠加分析**:将人口分布数据与地形、交通网络、环境指标等其他地理图层进行叠加,探究自然与人文因素对人口布局的影响机制。 2019 年成都市人口空间数据集为深入解析城市人口格局、优化国土空间规划及完善公共服务体系提供了重要的数据基础。借助地理信息系统工具,可开展多尺度、多维度的定量分析,从而为城市管理与学术研究提供科学依据。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
### 关于 C3P0 和 ActiveRecord 的关系与比较 C3P0 是一种用于 Java 应用程序的开源连接池解决方案,而 ActiveRecord 则是一种流行的 ORM(对象关系映射)框架模式,最初由 Ruby on Rails 推广并广泛应用于多种编程语言中。 #### 1. **定义与功能** - **C3P0**: 它是一个轻量级的 JDBC 连接池库,主要负责管理数据库连接资源。通过优化连接分配和回收机制,它能够显著提高应用程序性能[^1]。 - **ActiveRecord**: 这种设计模式不仅提供了一种将数据表中的记录映射到对象的方式,还封装了业务逻辑操作。开发者可以直接通过类实例化来执行 CRUD 操作,无需编写复杂的 SQL 查询语句[^2]。 #### 2. **技术领域差异** - **适用范围**: - C3P0 主要专注于解决数据库连接管理和性能调优问题,在任何需要频繁访问数据库的应用场景下都非常有用。 - ActiveRecord 更侧重于简化开发流程,减少手动处理 SQL 的工作量,适合快速构建基于模型驱动的应用程序。 - **实现细节**: - 使用 C3P0 需要在配置文件或者代码中指定其参数设置,比如最大最小空闲连接数、超时时间等,并将其集成至 HibernateSpring 等其他框架之中[^3]。 - 对于采用 ActiveRecord 的项目来说,则需定义好对应的实体类以及关联字段属性即可完成基本的数据交互需求[^4]。 #### 3. **性能考量** - 当涉及到高并发请求时,合理配置好的 C3P0 可以为应用带来更稳定的响应速度;然而如果仅依赖简单的 ActiveRecord 实现方式可能会因为缺乏细粒度控制而导致效率低下情况发生[^5]。 #### 4. **生态系统支持** 两者分别隶属于不同平台的技术栈生态体系之内——前者更多见诸于 Java EE 开发环境当中;后者则常见于动态脚本语言如 PHP(Laravel), Python(Django)等领域内被移植模仿使用[^6]。 ```java // Example of using C3P0 with Hibernate in a Java application. Properties properties = new Properties(); properties.setProperty("hibernate.connection.provider_class", "org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider"); SessionFactory sessionFactory = configuration.buildSessionFactory(properties); ``` ```ruby # Simple example demonstrating how to use ActiveRecord within Ruby On Rails framework. class User < ApplicationRecord end user = User.find(1) puts user.name ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值