JDBC CRUD Ejemplo en MySQL y Oracle [[NOTx]] JavaSE + Properties File + Pool
JDBC CRUD Ejemplo en MySQL y Oracle [[NOTx]] JavaSE + Properties File + Pool
El proyecto realiza un CRUD y simple con bd oracle y mysql, según 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 aquà 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 DAO 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.
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();
}
}
}
Adicionalmente se agregó una nueva dependencia al pom.xml la dependencia del 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>
codigo fuente
No hay comentarios.