JDBC - grupo de conexiones

Utilizar el grupo de conexiones DBCP y C3P0 a
través de JDBC 1. Utilizar el grupo de conexiones C3P0 a través de JDBC
C3P0 es un grupo de conexiones JDBC de código abierto, que implementa la fuente de datos y el enlace JNDI, admite la especificación JDBC3 y la extensión estándar JDBC2. Los proyectos de código abierto que lo utilizan actualmente incluyen Hibernate, Spring, etc.
Por ejemplo:
crear tabla t_user (
user_id int clave primaria auto_increment,
user_name varchar (20),
user_age int,
user_sex bit,
user_address varchar (30),
user_day datetime
);

2. Cree el proyecto Java
3. Importe el paquete de dependencia
c3p0-0.9.5.2.jar
mchange-commons-java-0.2.15.jar
mysql-connector-java-5.1.38.jar

4. Cree el archivo de configuración c3p0 en 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. Cree 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. Cree una clase de acceso a la base de datos

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();
		}
	   }
	}
}

Ventajas: No es necesario escribir manualmente la operación de creación de un objeto de conexión de base de datos, porque la configuración del grupo de conexiones de base de datos de c3p0 se ha configurado e inicializado correctamente.
Proporcionar eficiencia en la ejecución del programa.
No necesita modificar el código fuente cuando cambie la base de datos en el futuro, solo necesita modificar la configuración del grupo de conexiones de la base de datos c3p0.

2. Utilice el grupo de conexiones dbcp a través de JDBC. El
grupo de conexiones de la base de datos es responsable de asignar, administrar y liberar las conexiones de la base de datos. Permite que las aplicaciones reutilicen una conexión de la base de datos existente en lugar de restablecer una; libera las conexiones de la base de datos cuyo tiempo de inactividad excede el máximo de inactividad. tiempo Para evitar perder la conexión a la base de datos debido a que no se libera la conexión a la base de datos. Esta tecnología puede mejorar significativamente el rendimiento de las operaciones de la base de datos.
Ejemplos:

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. Cree un proyecto java
2. Importe el paquete jar
[commons-dbcp-1.4.jar
commons-dbutils-1.6.jar
commons-pool-1.6.jar]

3. Cree un archivo de configuración de conexión de base de datos en 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. Cree javabean
5. Cree una clase de acceso a la base de datos

 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. El acceso JDBC a Druid
Druid es, en primer lugar, un grupo de conexiones de base de datos. Druid es actualmente el mejor grupo de conexiones de bases de datos, en términos de funcionalidad, rendimiento y escalabilidad, supera a otros grupos de conexiones de bases de datos, incluidos DBCP, C3P0, BoneCP, Proxool y JBoss DataSource. Druid ha implementado más de 600 aplicaciones en Alibaba y ha sido probado rigurosamente en un entorno de producción a gran escala durante más de un año. Druid es un grupo de conexiones de base de datos desarrollado por Alibaba llamado Monitoring!
Al mismo tiempo, Druid no es solo un grupo de conexiones de base de datos, sino que incluye cuatro partes:
Druid es un componente JDBC, que incluye tres partes:
un sistema de complementos basado en el modelo Filter-Chain.
Grupo de conexión de base de datos eficiente y administrable de DruidDataSource.
Características de SQLParser
Druid
1. Reemplace DBCP y C3P0. Druid proporciona un grupo de conexiones de base de datos eficiente, potente y escalable.
2. Puede supervisar el rendimiento del acceso a la base de datos Druid proporciona un potente complemento StatFilter integrado, que puede realizar estadísticas detalladas sobre el rendimiento de la ejecución de SQL, lo que es útil para el análisis del rendimiento del acceso a la base de datos en línea.
3. La contraseña de la base de datos está cifrada. Escribir la contraseña de la base de datos directamente en el archivo de configuración es un mal comportamiento y puede generar fácilmente problemas de seguridad. Tanto DruidDruiver como DruidDataSource admiten PasswordCallback.
4. Registro de ejecución de SQL. Druid proporciona diferentes LogFilters, que pueden admitir Common-Logging, Log4j y JdkLog. Puede seleccionar el LogFilter correspondiente según sea necesario para monitorear el acceso a la base de datos de su aplicación.
5. Amplíe JDBC: si tiene requisitos de programación para la capa JDBC, puede utilizar el mecanismo de filtro proporcionado por Druid para escribir fácilmente complementos de extensión para la capa JDBC.
Entonces, Druid puede:
1. Actuar como un grupo de conexiones de base de datos.
2. Puede supervisar el rendimiento del acceso a la base de datos.
3. Obtener registros de ejecución de SQL.
Por ejemplo:

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. Cree un proyecto java
2. Importe el paquete jar [druid-1.1.10.jar]
3. Cree un archivo de configuración de conexión de base de datos [xxxxxxxx.properties] en 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. Cree javabean
5. Cree una clase de acceso a la base de datos

  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();
	   }
   }

Tarea: Modificar el programa de gestión de estudiantes [JDBC + Druid] hecho antes

Supongo que te gusta

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