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


 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el ttwitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Como puedo mapear de forma generica objetos con JDBC?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como puedo mapear de forma generica objetos con JDBC?  (Leído 1,149 veces)
macshivi

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Como puedo mapear de forma generica objetos con JDBC?
« en: 11 Marzo 2018, 00:19 »

Generalmente, cuando uso JDBC, para mapear un objeto suelo utilizar la libreria de apache DbUtils. Pero ahora mismo, tengo que hacer un proyecto sin ella, y no puedo utilizar ningun ORM, solo puedo utilizar el JDBC. Por lo que cuando mapeo objetos tengo que hacer algo parecido ha esto:

Código
  1. Connection con =  getConection();
  2. String sql = "select * from tabla"
  3. Statement stmt = con.createStatemnet();
  4. ResultSet rs = stmt.executeQuery(sql);
  5.  
  6. while (rs.next) {
  7.  Bean bn = new Bean()
  8.   /// extraigo las variables de manera manual
  9. bn.setAttr(rs.getString());
  10. bn.setAttr1(rs.getInt());
  11. }
  12.  

Entonces, mi pregunta es la siguiente. ¿Como podria crear un metodo que pasandole un objeto me lo mapee desde la base de datos, y me devuelva una lista?

Gracias.


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.410


ASMático


Ver Perfil WWW
Re: Como puedo mapear de forma generica objetos con JDBC?
« Respuesta #1 en: 11 Marzo 2018, 14:28 »

Tendrías que usar reflection, que te permite conocer la estructura de una clase, y modificar campos o llamar métodos de objetos de esta.
Partiendo de la premisa de que le eches un ojo a la reflection (http://www.oracle.com/technetwork/articles/java/javareflection-1536171.html), tendrías que ver los campos del bean al que le quieras asignar los datos del SQL, y compararlos con los nombres de las columnas del SQL (también puedes usar anotaciones si los nombres no coinciden).
Cuando encuentras el campo en cuestión, tendrías que asegurarte de que los tipos son correctos (VARCHAR -> String, INT -> int/Integer)...

Lo cierto es que hacer estod e forma genérica no es difícil, pero requiere tiempo y conocimiento de Reflection.
No es algo que deberías hacer para un proyecto pequeño. Tú considerarás si lo ves <necesario> (Ten en cuenta que lo que haces actualmente, llamando a cada uno de los setters, no es algo raro ni algo malo. Es la forma de hacerlo, simplemente.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines