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.
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
codigo fuente

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.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.