一、连接池的作用以及优点:
初始化的时候就已经创建好几个连接对象 连接数据库时候, 直接从连接池中获取一个连接对象使用 使用完, 归还给连接池, 可以让连接对象重复利用, 从而节约空间, 提高效率
二、连接池的设计思路:
1.初始化: 需要一个集合来存储连接对象
2.getConnection(): 从集合中获取一个连接
3.connection.close(): 把连接, 重新加到集合中 重点: 修改close方法
三、C3P0连接池
实现类:ComboPooledDataSource
连接方法:
1.手动
cpds.setDriverClass( "com.mysql.cj.jdbc.Driver" );
cpds.setJdbcUrl( "jdbc:mysql://数据库名" );
cpds.setUser("root");
cpds.setPassword("123456");
2.配置文件(配置文件必须放在src下且命名必须为:c3p0-config.xml)
<c3p0-config>
<!-- 默认配置 -->
<default-config>
<property name="automaticTestTable">con_test</property>
<property name="checkoutTimeout">30000</property>
<property name="idleConnectionTestPeriod">30</property>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
<property name="maxStatements">200</property>
<!-- 注册驱动 -->
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<!-- url -->
<property name="jdbcUrl">jdbc:mysql://localhost:3306/text?serverTimezone=GMT</property>
<!-- 用户名 -->
<property name="user">root</property>
<!-- 密码 -->
<property name="password">123456</property>
<user-overrides user="test-user">
<property name="maxPoolSize">10</property>
<property name="minPoolSize">1</property>
<property name="maxStatements">0</property>
</user-overrides>
</default-config>
<!-- This app is massive! -->
<named-config name="intergalactoApp">
<property name="acquireIncrement">50</property>
<property name="initialPoolSize">100</property>
<property name="minPoolSize">50</property>
<property name="maxPoolSize">1000</property>
<!-- intergalactoApp adopts a different approach to configuring statement caching -->
<property name="maxStatements">0</property>
<property name="maxStatementsPerConnection">5</property>
<!-- he's important, but there's only one of him -->
<user-overrides user="master-of-the-universe">
<property name="acquireIncrement">1</property>
<property name="initialPoolSize">1</property>
<property name="minPoolSize">1</property>
<property name="maxPoolSize">5</property>
<property name="maxStatementsPerConnection">50</property>
</user-overrides>
</named-config>
</c3p0-config>
四、druid连接池
实现类DruidDataSource
连接方式
1.手动
dds.setDriverClassName("com.mysql.cj.jdbc.Driver");
dds.setUrl("jdbc:mysql://localhost:3306/text?serverTimezone=GMT");
dds.setUsername("root");
dds.setPassword("123456");
2.配置文件(位置随意,创建实现类对象是需要传入一个配置文件对象)
Properties props = new Properties();
props.load(DruidDemo.class.getResourceAsStream("druid.properties"));
DataSource dataSource = DruidDataSourceFactory.createDataSource(props);