Método estático para conexión a PostgreSQL


Hace poco viendo algo de código, estuve analizando la forma de realizar conexiones a PostgreSQL desde una aplicación web hecha en JSP, y llegue a crearme un método estático para la realizar la conexión y almacenar los datos (usuario y password) la primera vez que la instancie. Esto hará que cuando quiera conectarme a realizar alguna consulta o transacción solo llamaria al método con los datos ya almacenados.

conexion_1.png

Estos métodos los utilizo para poder almacenar y obtener los datos, a continucacion creo el metodo estático de conexion.

conexion_2.png

Una vez realizado esto solo tendria que ingresar los datos e instanciarla una vez

conexion_3.png

Una vez instanciada la clase conexión solo lo llamaria de ahora en adelante en cualquier clase donde quiera realizar alguna conexión de la siguiente forma: Por ejemplo aquí hago una consulta a dos tabla para validar un usuario.

conexion_4.png

 

Esto solo es una forma de realizarlo y esta sujeta a cambios y/o sugerencias.

PD: El driver de conexión para PostgreSQL lo descargue de aquí

34 thoughts on “Método estático para conexión a PostgreSQL

  1. solo una cosa que seria bueno…
    usar un StringBuilder para la cadena de consulta en ves de usar “sql = (“SELECT * ………..”+loginUsuario.toUppercase ….. ) xq esto lo q hace es crear instancias de la cadena cosa q no es bueno (motivo: ya sabemos xq …) entonces quedaria algo asi:
    StringBuilder sb = new StringBuilder();
    sb.lenght() = 0 // por si las moscas
    sb.append(“SELECT ………………..”);
    sb.append(“WHERE ……”);

    nos vemos compare….

  2. Me parece que aplicando el patron de instancia única tambien se podria tener una sola instanca de una Clase Conexion, aca el codigo que uso para conectarme a una BD postgresql la ventaja es que solo la propia clase puede crear una instancia de ella misma. Aca el codigo:

    public class Conexion {
    private Conexion(){
    try{
    Class.forName(“org.postgresql.Driver”);
    psqlCon=DriverManager.getConnection(url,username,pass);
    }catch(Exception ex){
    System.out.println(ex.getMessage());
    }
    }

    public static void setUrl(String myUrl){
    url=myUrl;
    }

    public static void setUsername(String myUser){
    username=myUser;
    }

    public static void setPassword(String myPass){
    pass=myPass;
    }

    public static Conexion getConexion(){
    if(conexion==null)
    conexion=new Conexion();
    return conexion;
    }

    public Connection getConnection(){
    return psqlCon;
    }

    private static Conexion conexion;
    private static String url;
    private static String username;
    private static String pass;
    private Connection psqlCon;
    }

  3. Hola!!, chicos voy a integrar 2 sistemas en uno que voy a hacer, o sea que utilizaria las 2 bd de los sistemas hechos mas la bd del sistemas actual, el punto es si puedo acceder desde una sola aplicación a las 3 bd al mismo tiempo, o sea instanciar las 3, para no tener que normalizar las 3 bd y formar una sola, ya q cada sistema aproximadamente tienen 128 tablas cada uno.😦
    Pliss alguna idea o link donde pueda conseguir información al respecto

  4. Hola eloisa, claro que si puedes hacerlo, lo primero que tendrias que ver es si es que vas ha manejar las 3 instancias en la misma clase o crear una clase distintinta para cada instancia, como veras yo creo una clase llamada “conexion” y dentro de ella el metodo estatico “conexionBD”, lo que podrias hacer es crear otros metodos estaticos para las otras conexiones, obviamente seteando las URL diferentes para cada conexion.

    Espero haberte dado un alcanze. cualquier duda solo escribelo.

    Saludos.

  5. Oye nachxs, tengo problema para conectar mi proyect de web service con jboss lo he hecho con glassfish y si funciona pero con el servidor jboss no puedo conectarme, leí tu articulo y me pareció muy bueno. Saludos.

  6. Hola Manuel, primero que todo agradecerte por el tiempo para el leer el blog, me seria mas facil si me pudieras proporcionar mas detalle del problema que tienes, para asi tratar de darle una solucion

  7. cuando ejecuto el proyecto cliente dice que no encuentra el servidor jboss.

    lo he probado con un proyecto mas pequño donde hago una operacion de suma y tambien dice que el servidor no está disponible,¿poque será?

  8. hola
    muy buen blog, tengo una duda, esto lo puesdes usar con jsp, pero con portlets, es lo mismo quiero manejar una bd, ya la tengo en postgres uso pgAdmin 8.3, la conexion en entbean ya esta hecho, pero estas clases como funcionarian en el portlet.

  9. Hola ulises, gracias por leer el blog. Bueno con respecto a tu pregunta, segun tengo entendido portlets es un framework (nunca lo use) que tiene un gran parecido a el framework struts (si lo use). Hace poco escribi un post en donde te muestra una forma de trabajar sesiones con struts, quizas te pueda ayudar, lo que tendrias que hacer solo seria instanciar la clase de conexion dentro de la clase action.

    De todas maneras, es una buena oportunidad para probar este framework y asi poder escribir un pequeño articulo.

    Saludos.

  10. Hola nachxs, un gusto en saludar, lei el post de las sesiones con struts y con ello di mi primer paso en esto. Estoy haciendo un trabajo en struts y soy renovato en esto y estoy pegado en conectarme a la base de datos(postgresql). He probado millones de formas y esta es la millon +1XD. probe con este ejemplo escribiendo un action, no me tira ningun error pero tampoco ingresa los valores(lo modifique para que ingresara datos). para empezar ¿Como puedo conectar postgres a Struts? ¿Necesito algun Framework en especial ? estoy analizando tu ejemplo y lo que tampoco entiendo es por donde le metes los datos de conexion a la base de datos ? (user y pass) donde lo instancias ??

    porfa ayudame que estoy muy colgado.

    Bytes … y gracias

    • Hola Diego, gusto de saludarte. A ver, mas o menos te explico, struts es un framework que utiliza MVC(Modelo Vista Controlador), esto quiere decir que vas manejar como minimo 3 capas de desarrollo, la parte Interfaz que es la que ve el usuario, la parte de logica de negocio y la parte de acceso a datos. Cuando tu quieres conectar tu aplicacion struts a postgresql tendrias que tener una clase en la logica de negocio que te realizaria el seteo u obtencion de datos para asi obtener la conexion. Si te fijas la clase “Validar” es una clase que yo la tengo dentro de una capa intermedia y la clase “ValidaUsuario” es una clase que la tengo en la capa de acceso a datos. Yo puedo crear una pagina jsp y setear los datos directamente con etiquetas struts y asi mandarle los datos a la clase Conexion, una vez enviado estos datos la clase “Validar” haria el resto, pero para esto validar tendria que estar asociado a un action para asi realizar el forward respectivo ya sea cuando tienes un FAILURE o un SUCESS.
      Espero haberme explicado, tu sabes que a veces es un poco complicado explicarlo con palabras =P

      Saludos.

  11. Nachxs este es uno de los mejores ejemplos que he encontrado y mas cercano al web sevice que debo desarrollar. El problema mio es el siguiente. El web service mio deberá funcionar de la siguiente manera. El cliente deberá hacer una consulta sobre una vista que ellos nos entregaran, lo cual no es problema ya he generado las conexiones a las posibles vistas y base de datos, de la consulta que se hace sobre la vista saca unos datos que los meto en un arraylist lo cual también ya hice. El servidor web service debe recibir los datos que el cliente le envía en este caso el (arraylist) y ingresarlos a la base de datos.
    Problemas:
    * No se como enviar el objeto (arraylist del cliente), al servidor.

    Estoy trabajando con eclipse, jdk 1.5 y jboss 4.2.3 GA

    Alguna posible solucion con la cual me podrías ayudar?

    • Hola Camilo, gracias por el comentario.
      Bueno tengo una pregunta, el webservices lo estas implementando tu?? si fuera asi, porque a tu webservices no le creas con input del tipo arraylist??, o que tipo de dato recibe tu webservices??

      Saludos.

      • En si sería buenisimo que por el web service se pudiera enviar el objeto, en este caso el arraylist completo pero por lo que me he dado cuenta, es que con java no se puede, caso contrario de .net, por que en java si nos damos cuenta lo que el servidor web service interpreta es un xml generado cuando el cliente realiza las operaciones. Otra opcion que he pensado es desempaquetar la lista en una clase que llame web service, y mediante un ciclo enviarle los datos al xml para que los interprete. El problemilla es que no se como hacerlo. De casualidad tu no tienes un ejemplo de envio de datos desde el lado cliente al servidor web service que me facilitaras?

  12. A ver Camilo, por un webservice si se puede recibir un objeto del tipo ArrayList, te estoy enviando un pequeño ejemplo que implemente asi rapido para que lo analizes, segun lo que te entendi, tu quieres enviar a tu webservice un objeto arraylist.

    Espero sea lo que necesitas.

    Saludos.

  13. Hola, me pueden ayudar por favor. Estoy haciendo una conexion a una base de datos con java y postgre. Tengo mi clase conectar (donde esta toda la conexion) y mi clase en donde tengo diferentes metodos, que insertan, borran, etc. Como mando llamar todos esos metodos a mi clase conectar???? Me pueden ayudar por favor………

    • Hola Kacemaly, bueno supongamo que tu clase de conexion se llama Conexion.java y dentro de esta clase tienes el metodo llamado getConexion(). Entonces tu en tu metodo de insercion deberias tener algo como esto:

      Connection con = null;
      Statement smt = null;
      ResultSet rs = null;
      ….
      Conexion conectar = new Conexion();
      conn = connectar.getConexion()
      ….
      sql=(“aqui_tu_sql;”);
      smt = conn.createStatement();
      rs = smt.executeQuery(sql);
      if (rs.next()){
      return “OK”;
      }
      …..

      Espero te sea de utilidad, en todo caso si no me avisas para enviarte un pequeño proyecto que tenga a la mano.

  14. Hola que tal nachxs muchas gracias por el blog lo he encontrado muy muy interesante estoy tratando de diseñar un sistema que maneje una base de datos utilizando postgres y netbeans e intentado basarme en el ejemplo que viene en el net beans por default pero me no me corre tu ya lo has probado…este ejemplo se genera asi… file–new project–java–java desktop application–database application y genera la interfaz y todo pero al momento de correr me manda excepciones y no veo como es que trabaja en si…Me podrias ayudar con esto o mandarme algun ejemplo de algo muy parecido de antemano muchas gracias

  15. Hola nachxs, he estado mirando tu blog y estan bastante interesante para mi gusto los temas que aquí se tratan. Mi pregunta es la siguiente: Por casualidad has trabajado con seguridad dentro de Web Services ??. He estado estudiandome varios estandares que tratan de cerca este tema y la familia WS-* es muy amplia, especificamente el WS-Security es el estándar que trata este tema de la seguridad. Tendrías algun ejemplo implementado donde se encripten o se trabaje con seguridad de los servicios web en cualquier sentido (seguridad a nivel de mensaje o seguridad a nivel de transporte) ???

    • Hola Jhack, gracias por darte un tiempo para leer el blog, si justamente esta desarrollando una pequeña aplicacion web como ejemplo para poder plasmar este tema de seguridad, por el momento lo estoy implementado con seguridad estandar luego ire adentrando a esto. Te rogaria me pudieras algo de tiempo porque resulta que estoy por sustentar mi tesis de grado, especificamente el lunes 21 y bueno como veras en estos dias no tendre mucho tiempo para el blog, pero si lo hare de todas maneras.

      Ssaludos.

  16. Hola,

    Me parece buena la conexión pero para aplicaciones stand alone, ya que si estan refiriendose a web apps, deberia configurarse la conexión a base de datos en el servidor de apps y/o web, por lo cual la autenticación no sería necesaria y a través de jndi se accederia al datasource del servidor. Esto trae como beneficio el buen manejo de conexiones ya que, como todos sabemos, son un recurso limitado y costoso, por lo cual deben ser administradas por el servidor a través de los connections pools.

    Ejemplo:

    Previamente se configuraria un recurso llamado “miJndiBd” en digamos Tomcat o Glassfish, el cual tendría los parámetros de ruta y autenticación de base de datos.

    Y en nuestra aplicación:

    InitialContext in = new InitialContext();
    DataSource ds = (DataSource) in.lookup(“miJndiBd”);
    Connection cn = ds.getConnection();

    ¡Espero que les sirva!

  17. quiero saber por favor como debo hacer para que dentro de una tabla haya un link y me lleve a un metodo ya sea modificar o eliminar en Eclipse utilizando NetBeans

    • Hola Gabriela, ante todo agradecerte por darte una vuelta por el blog, te pediria por favor ser mas explicita, la verdad no entiendo muy bien tu pregunta

      Saludos.

  18. jambers :

    necesito ese ejemplo del arraylist en el web service urgente porfavor si alguien fuera tan amableee estoy usando mysql y netbeans 6.1

    Estimado, he intentado utilizar un jndi en mis proyectos, pero no he logrado acceder a la conexion con:
    InitialContext in = new InitialContext();
    DataSource ds = (DataSource) in.lookup(“miJndiBd”);
    Connection cn = ds.getConnection();

    tienes algun ejemplo pequeño de uso?.
    Te lo agradeceria bastante.

    Saludos.

  19. Javero :

    Hola,
    Me parece buena la conexión pero para aplicaciones stand alone, ya que si estan refiriendose a web apps, deberia configurarse la conexión a base de datos en el servidor de apps y/o web, por lo cual la autenticación no sería necesaria y a través de jndi se accederia al datasource del servidor. Esto trae como beneficio el buen manejo de conexiones ya que, como todos sabemos, son un recurso limitado y costoso, por lo cual deben ser administradas por el servidor a través de los connections pools.
    Ejemplo:
    Previamente se configuraria un recurso llamado “miJndiBd” en digamos Tomcat o Glassfish, el cual tendría los parámetros de ruta y autenticación de base de datos.
    Y en nuestra aplicación:
    InitialContext in = new InitialContext();
    DataSource ds = (DataSource) in.lookup(“miJndiBd”);
    Connection cn = ds.getConnection();
    ¡Espero que les sirva!

    Ahora si.

    Estimado, he intentado utilizar un jndi en mis proyectos, pero no he logrado acceder a la conexion con:
    InitialContext in = new InitialContext();
    DataSource ds = (DataSource) in.lookup(“miJndiBd”);
    Connection cn = ds.getConnection();
    tienes algun ejemplo pequeño de uso?.
    Te lo agradeceria bastante.
    Saludos.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s