数据库连接池
2019-06-08 / SQL / 1022 次围观 / 0 次吐槽 /连接池原理:
目的:解决建立数据库连接耗费资源和时间很多的问题,提高性能。
常用的数据库连接池
DBCP(DataBase Connection Pool)数据库连接池,是java数据库连接池的一种,由Apache开发,通过数据库连接池,可以让程序自动管理数据库连接的释放和断开。
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
DBCP使用
使用步骤:
添加jar包 commons-dbcp-1.4.jar commons-pool-1.5.6.jar
添加属性资源文件
在src中创建dbconfig.properties文件
#连接设置 driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/day16 username=root password= #<!-- 初始化连接 --> initialSize=10 #最大连接数量 maxActive=50 #<!-- 最大空闲连接 --> maxIdle=20 #<!-- 最小空闲连接 --> minIdle=5 #<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 --> maxWait=60000 #JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;] #注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。 connectionProperties=useUnicode=true;characterEncoding=utf8 #指定由连接池所创建的连接的自动提交(auto-commit)状态。 defaultAutoCommit=true #driver default 指定由连接池所创建的连接的只读(read-only)状态。 #如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix) defaultReadOnly= #driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。 #可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE defaultTransactionIsolation=REPEATABLE_READ
编写数据源工具类
C3P0的使用
使用步骤:
1、添加jar包
2、编写配置文件c3p0-config.xml,放在classpath中,或classes目录中
<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <default-config> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/day12</property> <property name="user">root</property> <property name="password">123456</property> <property name="initialPoolSize">10</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">100</property> <property name="minPoolSize">10</property> </default-config> </c3p0-config>
编写工具类
JNDI
Ø JNDI(Java Naming and Directory Interface)是一个应用程序设计的API
Ø 为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口
Ø 类似JDBC都是构建在抽象层上。
Ø 现在JNDI已经成为J2EE的标准之一,所有的J2EE容器都必须提供一个JNDI的服务。
Tomcat中配置JNDI 数据源
开发JavaWeb应用,必须使用一个JavaWeb服务器,JavaWeb服务器都内置数据源。这种配置就是JDNI
Tomcat 内置了数据源就是:(DBCP),所以数据源只需要配置服务器即可。
配置数据源的步骤:
Step1:拷贝数据库连接驱动的jar到tomcat的lib目录下
注意:如果出现java.lang.AbstractMethodError:com.mysql.jdbc.Connection.isValid(I)Z的问题,使用更高版本的数据库连接驱动
Step2配置数据源XML文件
a)如果把配置信息写在tomcat下的conf目录的context.xml中,那么所有应用都能使用此数据源。
b)如果是在当前应用的META-INF中创建context.xml, 编写数据源,那么只有当前应用可以使用。
<?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/DB" auth="Container" type="javax.sql.DataSource" username="root" password="123456" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/DB" maxTotal="8" maxIdle="4"/> </Context>
Step3使用连接池
多个数据源的配置
Ø 声明多个Resource即可
数据源:DataSource,可以理解成【数据库连接池】
数据库连接池实现3种方式
DBCP 【推荐,Oracle数据库也用DBCP】
C3P0 【C3P0一般与Hibernate一起使用】
JNDI 【tomcat内置的一个DBCP】
Powered By Cheug's Blog
Copyright Cheug Rights Reserved.