sábado, noviembre 23, 2013

Patron singleton en java

Esta vez voy a mostrar un patrón muy común en mis desarrollos , trata de el patrón Singleton de manera practica iré mostrando el ejemplo que realice con el respectivo código. El ejemplo del patrón realiza una conexión a base de datos mysql para hacer un select de una tabla.

Este es el diagrama 



Pues bien creamos el proyecto

Dentro del src creamos el paquete com.elkardumen.conexion para crear la clase ConnectDB que utilizaremos para crear el patrón , esto debe quedar mas o menos asi


Colocamos el código

package com.elkardumen.conexion;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectDB {

private static Connection connect;
private static ConnectDB instance;

private ConnectDB() {

try {

Class.forName("com.mysql.jdbc.Driver");
// connect DB
connect = DriverManager.getConnection("jdbc:mysql://127.0.0.1/MyDataBase","root", "");
}

catch (SQLException e) {
System.err.println(e.getMessage());

}

catch (ClassNotFoundException e) {
System.err.println(e.getMessage());
}
}

public static ConnectDB getInstance() {
//Esto servira para que solo se haga una vez garantizando el patron singleton
if (instance == null) {
System.out.println("Se crea la instancia solo una vez garantizanco el patron Singleton");
instance = new ConnectDB();
}

return instance;

}

public static Connection getConnect() {
return connect;
}

public static void setConnect(Connection connect) {
ConnectDB.connect = connect;
}


}

Creamos la clase Principal en el paquete com.elkardumen colocando el siguiente código:


package com.elkardumen;

import java.sql.ResultSet;
import java.sql.Statement;

import com.elkardumen.conexion.ConnectDB;

public class Principal {

/**
* @param args
*/
public static void main(String[] args) {
try{
//Creamos El primer llamado
ConnectDB con = ConnectDB.getInstance();
Statement stmt = con.getConnect().createStatement();
String query = "select * from micatalogo;" ;
ResultSet rs = stmt.executeQuery(query) ;
while (rs.next())
{
System.out.println (rs.getInt (1) + " - " + rs.getString (2)+ " - " + rs.getString(3));
}
//Creamos El segundo llamado
ConnectDB con2 = ConnectDB.getInstance();
Statement stmt2 = con2.getConnect().createStatement();
rs = stmt.executeQuery(query) ;
while (rs.next())
{
System.out.println (rs.getInt (1) + " - " + rs.getString (2)+ " - " + rs.getString(3));
}
}catch(Exception e){
e.printStackTrace();
}


}


}

En espera de que sirva de algo coloco el proyecto listo para descargar


2 comentarios:

  1. venga!!! minino un saludito no!!!

    ResponderEliminar
  2. Hola gracias por la explicación del patrón, lo estoy probando con EJB, JSP, Servlet y Dao en un CRUD de prueba... Reitero Gracias

    ResponderEliminar