Recent comments

JDBC CRUD Ejemplo en MySQL y Oracle Usando Tx JavaSE + Properties File + Pool

JDBC CRUD Ejemplo en MySQL y Oracle Usando Tx JavaSE + Properties File + Pool


El proyecto realiza un CRUD y simple con bd oracle y mysql, segun el archivo properties e implementa un pool de conexiones en la clase PoolConexion, la cual reemplaza a la clase Conexion. Este pool se implementa mediante la libreria de apache

org.apache.commons.dbcp2.BasicDataSource;

implementando aqui un patrón singleton para quien requiera un objeto connection.
Para que la conexión este disponible para otro cliente, se tiene que cerrar la conexión en este caso el método mainAlumno method realiza esta función

La estructura de la bd es una tabla llamada alumnos con 2 campos id como key y nombre.
Estructura del proyecto:


Clase PoolConexion que implementa la lógica del pool en el método getDataSource.


package com.tx.conexion;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSource;

public class PoolConexion {
    
    private static BasicDataSource ds;

    public static DataSource getDataSource() {
        if(ds == null) {
            try {
                Properties p = new Properties();
                InputStream fie;
                fie = new FileInputStream("src/main/resources/config.properties");
                p.load(fie);
                ds = new BasicDataSource();
                ds.setDriverClassName(p.getProperty("jdbc.driver"));
                ds.setUsername(p.getProperty("jdbc.user"));
                ds.setPassword(p.getProperty("jdbc.pass"));
                ds.setUrl(p.getProperty("jdbc.url"));
                //Definimos el tamano del pool de conexiones
                ds.setInitialSize(5);// 5 Conexiones iniciales
                fie.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return ds;
    }

    public static Connection getConexion() throws SQLException {
        return getDataSource().getConnection();
    }
    
//Cierre del resultSet
public static void close(ResultSet rs) {
try {
if (rs != null) {
rs.close();
}
} catch (SQLException sqle) {
sqle.printStackTrace();
}
}

//Cierre del PrepareStatement
public static void close(PreparedStatement stmt) {
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException sqle) {
sqle.printStackTrace();
}
}

//Cierre de la conexion
public static void close(Connection conn) {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException sqle) {
sqle.printStackTrace();
}
}

}

Se añade nueva dependencia al pool:


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tx</groupId>
<artifactId>tx-jdbc</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>
<dependencies>
  <dependency>
   <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.16</version>
    <scope>system</scope>
        <systemPath>${basedir}/src/lib/mysql-connector-java-8.0.16.jar</systemPath>
  </dependency>
  <dependency>
        <groupId>oracle</groupId>
        <artifactId>oracle-connector-java</artifactId>
        <version>18c</version>
        <scope>system</scope>
        <systemPath>${basedir}/src/lib/ojdbc8.jar</systemPath>
    </dependency>
    <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.1.1</version>
</dependency>
</dependencies>
</project>


 Código Fuente

No hay comentarios.