Java - Duda en método de conexión JDBC

 
Vista:
sin imagen de perfil

Duda en método de conexión JDBC

Publicado por Juan Antonio (3 intervenciones) el 21/09/2013 23:40:44
Hola, estoy retomando un poco la programación en Java y recientemente he hecho una conexión a una base de datos MySQL. He hecho una clase y funciona perfectamente, no obstante he mirado por internet y he encontrado una clase llamada MySQLConec y dentro de ella este método:

public MySQLConec conectar(){
try{
Class.forName(MYSQL_DRIVER);
setConexion(DriverManager.getConnection(SERVER,USER,PASSWORD));
if(conexion != null)
System.out.println("Conexion con la base de datos establecida.");
else
System.out.println("no se ha podido establecer la conexion.");
}catch(Exception ex){
ex.printStackTrace();
}
return this;
}

la mía es más o menos así:

public void conectar(){
try{
Class.forName(MYSQL_DRIVER);
setConexion(DriverManager.getConnection(SERVER,USER,PASSWORD));
if(conexion != null)
System.out.println("Conexion con la base de datos establecida.");
else
System.out.println("no se ha podido establecer la conexion.");
}catch(Exception ex){
ex.printStackTrace();
}
}

La pregunta que tengo es, ¿Aporta alguna ventaja la primera?, no entiendo muy bien por qué el método se llama igual que la clase y qué devuelve el this, evidentemente es el objeto instanciado pero no acabo de entender la necesidad de hacer esto.

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Duda en método de conexión JDBC

Publicado por UnoPorAhi (128 intervenciones) el 22/09/2013 09:58:36
Yo no le veo mucha ventaja. No se llama como la clase, sino que devuelve un objecto de tipo MySQLConec, que viene ser una referencia a la propia instancia de la clase. Esto en un principio parece redundante, ya que si has llamado al método es porque ya tienes una referencia a la instancia.
En cualquier caso habría que ver el diseño del programa en su conjunto para entender (si es que tiene sentido) porque se ha hecho así.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Duda en método de conexión JDBC

Publicado por Juan Antonio (3 intervenciones) el 22/09/2013 10:19:26
Hola,

gracias por responder tan pronto. Yo también pensaba que no tenía mucho sentido y que no aportaba nada, pero como no había visto hace mucho algo así mejor asegurarse.
En cualquier caso si a alguien se le ocurre un posible argumento que lo diga.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Duda en método de conexión JDBC

Publicado por UnoPorAhi (128 intervenciones) el 22/09/2013 13:03:46
No es que tenga o no tenga sentido, ni que sea mejor o peor. Depende de la lógica de cada programa. Para el que ha programado eso le resultaba útil devolver la instancia.
Por qué lo ha hecho así?, pues por ejemplo para poder comprobar fácilmente si la conexión se ha creado correctamente:
MySQLConec conection = new MySQLConec();
if (conection.conectar() != null) {
hago lo que sea

Aqui un ejemplo completo:
http://www.beingjavaguys.com/2013/06/create-jdbc-connection-in-java.html

Tu en tu caso, aunque no devuevas nada, puedes siempre tener un método inConectionCreated() que devuelva true o false, y también estaría bien. O bien lanzar una excepción si la conexión no se puede capturar, etc etc

Pero con lo que estás posteando, que es un extracto de código incompleto, es imposible saber si lo hace por eso o no.


Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar