C3P0是目前最流行的开源数据库连接池之一,它实现了数据源和JNDI绑定,支持JDBC2和JDBC3的规范,易于扩展且性能优越,目前使用它的开源框架有Hibernate和Spring等。在使用C3P0数据源开发时,需要熟悉ComboPooled DataSource类,它实现了javax.sql.DataSource接口,是C3P0中的核心类,包含了设置数据库连接信息的方法和数据库连接池初始化的方法,以及DataSource接口的get Connection方法等。
ComboPooled DataSource类有2个构造方法,分别为ComboPooledDataSource()和ComboPooled DataSource(String configName),用于创建数据源对象。
【例11-10】
使用ComboPooled DataSource类的无参构造方法创建数据源对象,并手动设置该数据源的属性。
步骤1:在chapter11项目lib目录下拷贝两个JAR包,即c3p0-0.9.2.1.jar和mchangecommons-java-0.2.3.4.jar,并将其导入该项目中,如图11-40所示。
图11-40 导入C3P0的两个JAR包
步骤2:在chapter11项目src目录下新建cn.linaw.chapter11.demo02包,在包里创建一个C3P0Test1测试类。源代码如图11-41所示。
图11-41 通过ComboPooledDataSource方法手动配置数据源信息
(1)程序第9行根据ComboPooled DataSource类的无参构造方法创建一个数据源对象。
(2)程序第12行set Driver Class方法设置连接数据库的驱动名称。
(3)程序第16行setJdbc Url方法设置连接数据库的路径。
(4)程序第17行set User方法设置登录数据库的用户。
(5)程序第18行setPassword方法设置登录数据库用户密码。
(6)程序第20行setInitialPoolSize方法设置数据库连接池初始化时创建的连接数。本例配置为3。
(7)程序第21行set MinPoolSize方法设置连接池保持的最小连接数。本例配置为3。
(8)程序第22行set Max PoolSize方法设置连接池中拥有的最大连接数。如果获得新连接时会使连接总数超过这个值,则不会再获取新连接,而是等待其他连接释放。本例配置为15。
(9)程序第23行set AcquireIncrement方法设置连接池在无空闲连接可用时一次性创建的新连接数。本例配置为3。
(10)程序第26行getConnection方法用于从数据库连接池中获取一个连接。
(11)程序第30行打印获得的连接对象。从执行结果看出,利用C3P0数据源对象成功获取到了数据库连接Connection对象。
(12)程序第31~37行,用于释放连接对象。注意,这里的释放,只是将其归还给连接池,不是真的从系统释放。(www.xing528.com)
【例11-11】
使用ComboPooled DataSource(String config Name)有参构造方法创建数据源对象。
步骤1:导入C3P0的两个JAR包。由于例11-10已经导入,该步骤略。
步骤2:在项目chapter11的类路径src目录下创建一个c3p0-config.xml文件,该配置文件用于设置数据库的连接信息和连接池参数的初始化信息,如图11-42所示。
图11-42 c3p0-config.xml配置
在该配置中,可以配置多套数据源信息,本例包括默认配置和命名为“name1-config”的两套配置信息,当程序后期需要更换数据源配置时,只需修改构造方法中的config Name参数值即可,非常方便。
注意:
配置文件名称必须为c3p0-config.xml或者c3p0.properties,并且位于该项目src根目录下。如果构造方法中传入的config Name值为空或者不存在,则使用<default-config>...</default-config>中的默认配置信息。
步骤3:在chapter11项目src目录下cn.linaw.chapter11.demo02包下创建一个C3P0Test2测试类。源代码如图11-43所示。
图11-43 通过读取配置文件配置数据源信息
(1)程序第11行,当创建连接池对象时,会自动从类路径下加载配置文件“c3p0-config.xml”,根据构造方法config Name参数的取值选用该配置文件中对应的配置信息。
(2)程序第13行数据源对象getConnection方法用于从数据库连接池中获取一个连接。
(3)程序第17行打印连接对象。从执行结果看出,这里成功获取到了数据库连接Connection对象。
项目总结
本项目讲解了JDBC编程相关知识。首先安装了MySQL数据库,并创建了需要操作的数据库和表,接着介绍了JDBC常用的API,并通过案例展示如何通过JDBC向数据库做增、删、改、查等操作,然后讲解了数据库事务处理,事务处理是数据库操作中很重要的概念。本项目最后简单介绍了开发中常用的开源JDBC连接池C3P0数据源。
项目作业
1.简述什么是JDBC,JDBC编程分哪几步。
2.简述java.util.Date时间类型和java.sql包下的三个时间相关类型如何转换。
3.上机实践书中出现的案例,可自由发挥修改。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。