JDBC - pool de conexão

Use a operação do pool de conexão DBCP e C3P0
por meio de JDBC 1. Use o pool de conexão C3P0 por meio de JDBC
C3P0 é um pool de conexão JDBC de código aberto, que implementa a origem de dados e a ligação JNDI, suporta a especificação JDBC3 e a extensão padrão JDBC2. Projetos de código aberto que atualmente o usam incluem Hibernate, Spring, etc.
Por exemplo:
criar tabela t_user (
user_id int chave primária auto_increment,
user_name varchar (20),
user_age int,
user_sex bit,
user_address varchar (30),
user_day datetime
);

2. Crie um projeto Java
3. Importe o pacote de dependência
c3p0-0.9.5.2.jar
mchange-commons-java-0.2.15.jar
mysql-connector-java-5.1.38.jar

4. Crie o arquivo de configuração c3p0 em ser [c3p0- config.xml]

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
    <!-- c3p0的默认配置项 -->
	<default-config>
    	<property name="driverClass">com.mysql.jdbc.Driver</property>
    	<property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
    	<property name="user">root</property>
    	<property name="password">123456</property>
    	<property name="initialPoolSize">5</property>
    	<property name="maxPoolSize">20</property>
  	</default-config>
  	<!-- 定义的数据库配置 -->
  	<named-config name="test"> 
    	<property name="driverClass">com.mysql.jdbc.Driver</property>
    	<property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
    	<property name="user">root</property>
    	<property name="password">123456</property>
    	<property name="initialPoolSize">25</property>
    	<property name="maxPoolSize">200</property>
  	</named-config>
</c3p0-config>

5. Crie JavaBean

package com.lx.bean;
/**
 * 保存用户信息的java实体类
 * @author Administrator
 *
 */

import java.sql.Date;

public class UserBean {
	private int userid;
	private String username;
	private int userage;
	private boolean usersex;
	private String useraddress;
	private Date userday;

	public int getUserid() {
		return userid;
	}

	public void setUserid(int userid) {
		this.userid = userid;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public int getUserage() {
		return userage;
	}

	public void setUserage(int userage) {
		this.userage = userage;
	}

	public boolean isUsersex() {
		return usersex;
	}

	public void setUsersex(boolean usersex) {
		this.usersex = usersex;
	}

	public String getUseraddress() {
		return useraddress;
	}

	public void setUseraddress(String useraddress) {
		this.useraddress = useraddress;
	}

	public Date getUserday() {
		return userday;
	}

	public void setUserday(Date userday) {
		this.userday = userday;
	}
}

6. Crie uma classe de acesso ao banco de dados

package com.lx.dbacsess;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.lx.bean.UserBean;
public class UserAcsess {
	//定义保存c3p0数据源对象
   private ComboPooledDataSource dataSource=null;
   //定义数据库连接对象
   private  Connection  conn=null;
   //定义PreparedStatement 
   private PreparedStatement ps=null;
   public UserAcsess() {
	   //加载c3p0-config.xml文件中默认的config
	   //初始化数据源
	   //dataSource =new ComboPooledDataSource();
	   //初始化数据源,加载的是自定义的数据库表配置项
	   dataSource =new ComboPooledDataSource("test");
       //初始化数据源
	   try {
		conn=dataSource.getConnection();
	   } catch (SQLException e) {
		e.printStackTrace();
	   }
   }
  
   public  void  insertUser(UserBean  userbean) {
	   try {
	   String insertsql="insert into t_user values(null,?,?,?,?,?);";
	   ps=conn.prepareStatement(insertsql);
	   ps.setString(1,userbean.getUsername());
	   ps.setInt(2,userbean.getUserage());
       ps.setBoolean(3,userbean.isUsersex());
       ps.setString(4,userbean.getUseraddress());
       ps.setDate(5,new Date(System.currentTimeMillis()));
       int temp=ps.executeUpdate();
	   if(temp>0)  System.out.println("添加成功");
	   }catch(Exception e) {
		   e.printStackTrace();
	   }finally {
		   try {
			ps.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	   }
	}
   
   public  void  updateUser(UserBean  userbean) {
	   try {
	   String insertsql="update t_user set user_name=?,"
	   		+ "user_age=?,user_sex=?,user_address=?,user_day=?"
	   		+ " where user_id=?";
	   ps=conn.prepareStatement(insertsql);
	   ps.setString(1,userbean.getUsername());
	   ps.setInt(2,userbean.getUserage());
       ps.setBoolean(3,userbean.isUsersex());
       ps.setString(4,userbean.getUseraddress());
       ps.setDate(5,new Date(System.currentTimeMillis()));
       ps.setInt(6,userbean.getUserid());
       int temp=ps.executeUpdate();
	   if(temp>0)  System.out.println("修改成功");
	   }catch(Exception e) {
		   e.printStackTrace();
	   }finally {
		   try {
			ps.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	   }
	}
   
   public  void  deleteUser(int userid) {
	   try {
	   String insertsql="delete from t_user where user_id=?";
	   ps=conn.prepareStatement(insertsql);
       ps.setInt(1,userid);
       int temp=ps.executeUpdate();
	   if(temp>0)  System.out.println("删除成功");
	   }catch(Exception e) {
		   e.printStackTrace();
	   }finally {
		   try {
			ps.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	   }
	}
   
   public  void  selectUser() {
	   try {
	   String selectsql="select* from t_user;";
	   ps=conn.prepareStatement(selectsql);
       ResultSet temp=ps.executeQuery();
	   while(temp.next()) {
		   int userid=temp.getInt("user_id");
		   String username=temp.getString("user_name");
		   int userage=temp.getInt("user_age");
		   boolean usersex=temp.getBoolean("user_sex");
		   String useraddress=temp.getString("user_address");
		   Date userday=temp.getDate("user_day");
	       System.out.println(userid+"\t"+username);
	   }
	   }catch(Exception e) {
		   e.printStackTrace();
	   }finally {
		   try {
			ps.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	   }
	}
}

Vantagens: Não há necessidade de gravar manualmente a operação de criação de um objeto de conexão de banco de dados, porque a configuração do pool de conexão de banco de dados de c3p0 foi configurada e inicializada com sucesso.
Fornece eficiência de execução do programa.
Você não precisa modificar o código-fonte quando alternar o banco de dados no futuro; você só precisa modificar a configuração do conjunto de conexões de banco de dados c3p0.

2. Use o pool de conexão dbcp por meio de JDBC. O
pool de conexão de banco de dados é responsável por alocar, gerenciar e liberar conexões de banco de dados. Ele permite que os aplicativos reutilizem uma conexão de banco de dados existente em vez de restabelecer uma; libera conexões de banco de dados cujo tempo ocioso excede o máximo tempo Para evitar a perda da conexão com o banco de dados causada por não liberar a conexão com o banco de dados. Essa tecnologia pode melhorar significativamente o desempenho das operações do banco de dados.
Exemplos:

create table t_user(
user_id int primary key auto_increment,
user_name varchar(20),
user_age int,
user_sex bit,
user_address varchar(30),
user_day datetime
);

1. Crie um projeto java
2. Importe o pacote jar
[commons-dbcp-1.4.jar
commons-dbutils-1.6.jar
commons-pool-1.6.jar]

3. Crie um arquivo de configuração de conexão de banco de dados em src [xxxxxxxx.properties]

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
username=root
password=123456
maxActive=50
maxIdle=20
maxWait=60000

4. Crie JavaBean
5. Crie uma classe de acesso ao banco de dados

 public UserAscess() {
	   try {
	   Properties pro=new Properties();
	   InputStream inStream=this.getClass().getResourceAsStream("/jdbcdbcp.properties");
	   pro.load(inStream);
	   DataSource ds=BasicDataSourceFactory.createDataSource(pro);
	   conn=ds.getConnection();
	   }catch(Exception e) {
		   e.printStackTrace();
	   }
   }

3. O acesso JDBC ao Druid
Druid é primeiro um conjunto de conexões de banco de dados. Druid é atualmente o melhor pool de conexão de banco de dados, em termos de funcionalidade, desempenho e escalabilidade, ele supera outros pools de conexão de banco de dados, incluindo DBCP, C3P0, BoneCP, Proxool e JBoss DataSource. O Druid implantou mais de 600 aplicativos no Alibaba e foi rigorosamente testado em um ambiente de produção em grande escala por mais de um ano. Druid é um pool de conexão de banco de dados desenvolvido pela Alibaba chamado Monitoring!
Ao mesmo tempo, o Druid não é apenas um pool de conexão de banco de dados, ele inclui quatro partes:
Druid é um componente JDBC, que inclui três partes:
um sistema de plug-in baseado no modelo Filter-Chain.
DruidDataSource - pool de conexão de banco de dados eficiente e gerenciável.
Recursos do SQLParser
Druid
1. Substitua DBCP e C3P0. O Druid fornece um pool de conexão de banco de dados eficiente, poderoso e escalonável.
2. Você pode monitorar o desempenho de acesso ao banco de dados.O Druid fornece um poderoso plug-in StatFilter integrado, que pode realizar estatísticas detalhadas sobre o desempenho de execução de SQL, o que é útil para análise de desempenho de acesso ao banco de dados online.
3. A senha do banco de dados é criptografada. Gravar a senha do banco de dados diretamente no arquivo de configuração é um mau comportamento e pode facilmente levar a problemas de segurança. Tanto DruidDruiver quanto DruidDataSource oferecem suporte a PasswordCallback.
4. Log de execução SQL. O Druid fornece diferentes LogFilters, que podem suportar Common-Logging, Log4j e JdkLog. Você pode selecionar o LogFilter correspondente conforme necessário para monitorar o acesso ao banco de dados de seu aplicativo.
5. Estenda JDBC.Se você tiver requisitos de programação para a camada JDBC, você pode usar o mecanismo de filtro fornecido pelo Druid para escrever facilmente plug-ins de extensão para a camada JDBC.
Portanto, o Druid pode:
1. Atuar como um pool de conexão de banco de dados.
2. Você pode monitorar o desempenho de acesso ao banco de dados.
3. Obtenha logs de execução de SQL.
Por exemplo:

create table t_user(
user_id int primary key auto_increment,
user_name varchar(20),
user_age int,
user_sex bit,
user_address varchar(30),
user_day datetime
);

1. Crie um projeto java
2. Importe o pacote jar [druid-1.1.10.jar]
3. Crie um arquivo de configuração de conexão de banco de dados [xxxxxxxx.properties] em src

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
username=root
password=123456
initialSize=100
maxActive=300
maxWait=60000
Druid配置详解
https://blog.csdn.net/zhangjinwei417/article/details/92823438

4. Crie JavaBean
5. Crie uma classe de acesso ao banco de dados

  private Connection conn=null;
   private PreparedStatement ps=null;
   public UserAscess() {
	   try {
	   Properties pro=new Properties();
	   InputStream inStream=this.getClass().getResourceAsStream("/druid.properties");
	   pro.load(inStream);
	   DataSource ds=DruidDataSourceFactory.createDataSource(pro);
	   conn=ds.getConnection();
	   }catch(Exception e) {
		   e.printStackTrace();
	   }
   }

Lição de casa: Modificar o programa de gerenciamento de alunos [JDBC + Druid] feito antes

Acho que você gosta

Origin blog.csdn.net/guoguo0717/article/details/108873278
Recomendado
Clasificación