Recent comments

JDBC CRUD Ejemplo en H2 Usando Tx JavaSE + Properties File + Pool

JDBC CRUD Ejemplo en H2 Usando Tx JavaSE + Properties File + Pool


Este ejemplo es simil a los anteriores realizados con MySQL y Oracle, solo que ahora utiliza una base de datos para pruebas H2, la cual es conveniente para hacer pruebas sin tener que preocuparte por instalar algún gesto de BD.

Estructura del proyecto:



Solamente mostraré el cambio principal, el cual es en el pool de conexiones, este se añade una lógica para detectar si se está usando el driver de h2, de ser así carga el script sql y deja la base lista para operar.


package com.tx.conexion;

import java.io.BufferedInputStream;
import java.io.File;
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
                if(p.getProperty("jdbc.driver").contains("org.h2.Driver")) {
                    PreparedStatement stmt = null;
                    Connection conn = ds.getConnection();
                    stmt = conn.prepareStatement(leerSqlFile());
                    stmt.execute();
                    stmt.close();
                    conn.close();
                }
                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();
}
}
/**
* metodo para cargar el script para h2
* **/
private static String leerSqlFile() {
byte[] buffer = null;
File file = new File("src/main/resources/script.sql");
buffer = new byte[(int) file.length()];
BufferedInputStream f = null;
try {
f = new BufferedInputStream(new FileInputStream("src/main/resources/script.sql"));
f.read(buffer);
f.close();
} catch (Exception e) {
    e.printStackTrace();
        }
return new String(buffer);
}

}

El proyecto adjunto la clase mainAlumno en su version Tx, el script sql, el pool de conexion con apache, asi como el archivo pom.xml con la dependencia para h2.

pom.xml

<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>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.199</version>
    </dependency>
</dependencies>
</project>


codigo fuente





No hay comentarios.