elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Patrón Singlenton y conexión BD
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Patrón Singlenton y conexión BD  (Leído 3,092 veces)
gasoft

Desconectado Desconectado

Mensajes: 25


Solo se que nada Se


Ver Perfil WWW
Patrón Singlenton y conexión BD
« en: 23 Septiembre 2011, 22:28 pm »

Hola,

Desde hace algunos días tengo una duda sobre el patrón singlenton y si es buena idea utilizarlo para manejar la forma en como llamo cuando requiero realizar alguna transacción con la base de datos PostgreSQL.  La duda está relacionada  a; cómo se gestionan utilizando este patrón la conexiones que ya se dejaron de usar, es decir si no se cierran en ningún momento o si el Garbage Collector las recicla.  Ya que como pueden ver en la clase  no hay un método que la cierre algo como closeConnection() .
 
Gracias de antemano por los posibles aportes a esta duda que me embarga.


Código
  1. public class bdS {
  2.  
  3.    //Instancia estatica de la conexion, sino uno llega a existir
  4.    private static Connection connection = null;
  5.  
  6.    /**
  7.      *
  8.      * @return Devuelve la instancia unica de Conexion
  9.      */
  10.    public static Connection getConexion() {
  11.        //Si la instancia no ha sido creado aun, se crea
  12.        if (bdS.connection == null) {
  13.            contruyendoConexion();
  14.        }
  15.        return bdS.connection;
  16.    }
  17.  
  18.    //Obtener las instancias de Conexion JDBC
  19.    private static void contruyendoConexion() {
  20.        try {
  21.            Class.forName("org.postgresql.Driver");
  22.            String url = "jdbc:postgresql://localhost:5432/bd";
  23.            String usuario = "postgres";
  24.            String clave = "password";
  25.            bdS.connection = DriverManager.getConnection(url, usuario, clave);
  26.        } catch (ClassNotFoundException e) {
  27.            System.out.println("ClassNotFoundException(contruyendoConexion)  : " + e.getMessage());
  28.            System.gc();
  29.        } catch (SQLException e) {
  30.            System.out.println("SQLException(contruyendoConexion) : " + e.getMessage());
  31.            System.gc();
  32.        } catch (Exception e) {
  33.            System.out.println(" Exception General (contruyendoConexion) : " + e.getMessage());
  34.            System.gc();
  35.        }
  36.    }
  37. }



En línea

pianista
Colaborador
***
Desconectado Desconectado

Mensajes: 5.654


Hacking Wireless Live!


Ver Perfil WWW
Re: Patrón Singlenton y conexión BD
« Respuesta #1 en: 25 Septiembre 2011, 16:33 pm »

La mayoría de los gestores las van cerrando si ven que no se usan, osea que tranquilo por eso, salvo que vayas a montar 2000 y lo tires xD

Respecto a si es bueno tener una conexión, pues depende.

Si vas a tener por ejemplo dos partes del programa, donde una es vital que esté conectada y la otra hace conexiones esporádicas, yo le daría una a cada uno para que no se me machaque una, si la otra se cae. Pero es cuestión de gustos y tampoco soy muy experto.

Saludos


En línea

Littlehorse
All the world's a stage
Colaborador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Patrón Singlenton y conexión BD
« Respuesta #2 en: 28 Septiembre 2011, 00:15 am »

Usar Singleton o no depende de la arquitectura de aplicacion. Que modulos van a realizar transacciones, cantidad de conexiones, y demas.

NUNCA se depende de lo que pueda llegar a hacer el motor de la base de datos ni de lo que pueda llegar a hacer por debajo la implementacion del conector.  Mucho menos se depende de si el garbage collector recicla o no conexiones, lo que haga el garbage collector es irrelevante, es solo una ayuda en cuestion performance que no tiene que influir en el planteo de los algoritmos, caso contrario podes generar comportamientos impredecibles que despues son muy dificiles de depurar.

Lo que se suele hacer con los manejadores de conexion es que dentro contengan un pool de conexiones y que estas se utilicen on-demand. De esta manera obtenes un desempeño mas optimo que abriendo y cerrando las conexiones constantemente ya que esa es la parte que mas trabajo da.

Si es una sola conexion, se cierra cuando la aplicacion la deje de utilizar. Si son multiples conexiones (pool), se devuelve la conexion al pool para que pueda ser reutilizada y se cierra el pool entero cuando la aplicacion ya no requiera conexiones.

Este tipo de teoria basica es importante, porque luego ayuda a la hora de trabajar con frameworks (como por ejemplo Hibernate)

Saludos!

PD: Evitar el hardcodeo en la medida de lo posible, te va a ahorrar muchos problemas.
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Patron MVC con VB.net
.NET (C#, VB.NET, ASP)
jhct 3 8,906 Último mensaje 25 Junio 2009, 04:49 am
por jguillen
Redes Jazztel...Posible patron?
Hacking Wireless
Cleantesdeasso 3 3,789 Último mensaje 22 Julio 2010, 20:53 pm
por KARR
patron claves wep O-n-O en valencia
Hacking Wireless
sapito123 3 5,919 Último mensaje 8 Octubre 2010, 10:01 am
por sapito123
Patrón de bucle
Programación C/C++
Krauserv22 5 4,251 Último mensaje 20 Enero 2011, 06:36 am
por N0body
Ayuda-Patron Bridge
Java
luxferre 1 2,980 Último mensaje 1 Mayo 2012, 19:42 pm
por Proteus1989
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines