Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] [Consulta] Mejor manera de implementar métodos para administrar una DataBase

Estas en el tema de [Consulta] Mejor manera de implementar métodos para administrar una DataBase en el foro de Java en Foros del Web. Hola. Tengo ciertas dudas respecto a una aplicación en la que trabajo, lo que busco son consejos mas que corrección de errores como tal. Resulta ...
  #1 (permalink)  
Antiguo 11/06/2014, 01:13
 
Fecha de Ingreso: agosto-2013
Mensajes: 90
Antigüedad: 10 años, 8 meses
Puntos: 1
[Consulta] Mejor manera de implementar métodos para administrar una DataBase

Hola.

Tengo ciertas dudas respecto a una aplicación en la que trabajo, lo que busco son consejos mas que corrección de errores como tal.

Resulta que tengo una aplicación que administra múltiples tablas, supongamos que tiene solo 3 tablas. Esta administración conlleva su debido ingreso, búsqueda, eliminación y modificación de la tabla.

Mi dilema surge cuando veo la gran cantidad de código que me resulta.
Ya que para cada tabla tengo que crear los métodos que he mencionado arriba mas las conexiones a la base de datos.
Se que estoy haciendo las cosas mas mal que bien en este tema.

Por lo tanto quiero ver si me pueden aconsejar, sobre alguna forma que me simplifique las cosas en ahorro de código.

Había pensado en una clase Conexión que tenga todos estos métodos y que por medio de parámetros le ingrese los datos, pero para cada tabla los métodos cambian, algunos llevan mas valores que otros y así respectivamente.

Lo de una interfaz no lo vi viable, ya que esta me pide estrictamente sobrescribir los métodos y quedo en las mismas con un montón de código.

Saludos y espero entiendan mi problema.

Gracias
  #2 (permalink)  
Antiguo 11/06/2014, 03:34
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: [Consulta] Mejor manera de implementar métodos para administrar una DataBa

Yo para evitar esto miro de usar un ORM e implementar el patrón repositorio. Dale un vistazo a esos dos conceptos porque te quitarán mucho trabajo.
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 11/06/2014, 10:33
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba
Mensajes: 119
Antigüedad: 13 años, 5 meses
Puntos: 8
Respuesta: [Consulta] Mejor manera de implementar métodos para administrar una DataBa

Bueno, podrías utilizar el patron de diseño MVC.
Y además, programarte una pequeña clase, que como has dicho, se encargará de tener los métodos CRUD.

Por ejemplo, en una aplicación .NET que realice hace poco, implemente esto de este modo.

1 - Se crea el paquete Data.
2 - Se crea el paquete Facade.
3 - Se create el paquete Client.

El paquete Data contendrá todas las clases que tengan que lancen las consultas.
El paquete Facade se encargará de enrutar desde el cliente hacia el método dentro de Data que necesitamos.
El paquete Client contiene las clases que representan la UI.

En otro paquete, llamemosle Classes, creraras las clase DataBaseHandler.

Vegamos un pequeño ejemplo, imagina un poco:

Estamos trabajando con la tabla empleados de nuestra base de datos, para ello tenemos in Java Form llamado ClientEmployees, donde existe una simple lista que debe rellenarse con los empleados que están dentro de la tabla empleados de la base de datos.

Este importará un facade del paquete facade, será el FacadeEmployees, quien contendrá un método llamado getAllEmployees();, a su misma vez, el FacadeEmployees tiene importada la clase del paquete Data, DataEmployees, quien tiene el método, igual, getAllEmployess, forma la consulta, la pasa a DataBaseHandler() y devuelve.


Código Java:
Ver original
  1.  

Código Java:
Ver original
  1. public class FacadeEmployess
  2. {
  3.         private DataEmployees dataEmployees = null;
  4.  
  5.        public FacadeEmployess()
  6.        {
  7.              dataEmployees = new DataEmployees();
  8.        }
  9.  
  10.       public List<?> getAllEmployees()
  11.      {
  12.           return dataEmployees.getAllEmployes();
  13.      }  
  14. }

Código Java:
Ver original
  1. public class DataEmployess
  2. {
  3.        private DataBaseHandler databaseHandler = null;
  4.  
  5.        public DataEmployess()
  6.        {
  7.              databaseHandler = DataBaseHandler();
  8.        }
  9.  
  10.      public List<?> getAllEmployees()
  11.      {
  12.           // Armamos el SQL
  13.           String SQL = "SELECT * ...";
  14.           return databaseHandler.select( SQL );
  15.      }  
  16. }

Espero haberte ayudado en algo.
  #4 (permalink)  
Antiguo 11/06/2014, 11:17
 
Fecha de Ingreso: diciembre-2012
Mensajes: 53
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: [Consulta] Mejor manera de implementar métodos para administrar una DataBa

Hola buenas tardes, no se con que IDE estas desarrollando yo utilizo ECLIPSE version JUNO
y para ser un poco mas ordenado si se puede llamarlo de esa manera
Divido las clases en diferentes Paquetes.

por ejemplo:

Paquete entidades: Clase Persona

Paquete Gestores: Clase de Conexion, Clase GestorPersona (Donde codifico los metodos referidos a la clase persona para obtener los datos de la BD)

Paquete Pantallas: donde van las clases que heredan de JFrame, las ventanas por decirlo de alguna manera

y en la codificacion de los botones de tus ventanas llamo los metodos de la clase "GestorPersona"

Espero haberte orientado un poco y no haberte confundido peor.

Saludos
  #5 (permalink)  
Antiguo 11/06/2014, 17:08
 
Fecha de Ingreso: agosto-2013
Mensajes: 90
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: [Consulta] Mejor manera de implementar métodos para administrar una DataBa

Cita:
Iniciado por Malenko Ver Mensaje
....
Gracias compañero, buscare mas información de lo que me mencionas.
  #6 (permalink)  
Antiguo 11/06/2014, 17:22
 
Fecha de Ingreso: agosto-2013
Mensajes: 90
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: [Consulta] Mejor manera de implementar métodos para administrar una DataBa

Cita:
Iniciado por nickou Ver Mensaje
...
Saludos.
El detalle no es la distribución de los paquetes, utilizo MVC la forma de los paquetes creo que lo estoy haciendo bien.

Me refiero a las clases, supongamos como has dicho la GestorPersonas, esta tiene todos los método para tratar la DB. Pero si yo en mi proyecto tengo 20 tablas que administrar, me tocaría tener un montón de código muy similar en esas 20 clases para trabajar con la DB.

Lo que buscaba era una forma de ahorra algo de código con esto.

Saludos.
  #7 (permalink)  
Antiguo 11/06/2014, 17:35
 
Fecha de Ingreso: diciembre-2011
Mensajes: 152
Antigüedad: 12 años, 4 meses
Puntos: 34
Respuesta: [Consulta] Mejor manera de implementar métodos para administrar una DataBa

Si tu aplicación maneja una base de datos muy pequeña puede que no sea muy conveniente utilizar un ORM, aunque si estas decidido a utilizar alguno te recomiendo http://ormlite.com/ es muy útil para pequeños proyectos.

En lo personal a mi no me gustan nada los ORM actuales programados en java, me parecen muy complicados (ya que están diseñados para utilizarse en grandes proyectos) y no son buenas soluciones para pequeños proyectos por que al final terminas escribiendo mas código del necesario.

Ahora con la llegada de java 8 creo que esto puede mejorar un poco, yo por ejemplo tengo tiempo trabajando en una librería basada en el Query builder de Laravel.

Facilitando mucho las cosas cuando se trabaja con pequeños proyectos donde no se necesita el uso de esos complicados y pesados ORMs.
Código Java:
Ver original
  1. Configuration.load("/databases.yml");
  2.  
  3. Database.useDefault((db) -> {
  4.             db.from("users")
  5.                     .where("name", like("%u%"))
  6.                     .lists("name")
  7.                     .forEach(System.out::println);
  8.  
  9. });

Produciendo una salida como esta:
Código SQL:
Ver original
  1. 17:38:18.554 DEBUG [main][Connector]
  2. (SQL: {
  3.     SELECT * FROM `users` WHERE `name` LIKE ?
  4. })
  5. (Bindings: {
  6.     1 => '%u%'
  7. })
  8. TIME: 0.013000 seconds
  9.  
  10. luis
  #8 (permalink)  
Antiguo 11/06/2014, 22:53
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: [Consulta] Mejor manera de implementar métodos para administrar una DataBa

Hola:

El problema que tienes (muchas tablas para las que habría que crear mucho código repetitivo con pequeñas variaciones), se resuelve con herramientas que generan ese código automáticamente. Estas herramientas suelen conectarse a la base de datos y para cada tabla te generan automáticamente una clase java asociada a la tabla y los métodos para hacer los select, insert, update y delete correspondientes.

Bastante conocido aunque se usa poco porque se usan más los ORM, tienes abator http://ibatis.apache.org/docs/tools/abator/ .

Los ORM suelen tener este tipo de herramientas, por ejemplo, hibernate las tiene y se integran con IDEs como eclipse http://www.mkyong.com/hibernate/how-...bernate-tools/

Hibernate, de hecho, tiene muy fácil el camino contrario. Creas tus clases java y él automáticamente crea las tablas de base de datos. Eso sí, aunque con hibernate se te facilita el hacer las consultas, insert, updates y deletes, el código de consultas tendrías que hacerlo más manualmente.

seguramente, a poco que busques, encontrarás más herramientas de este estilo.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #9 (permalink)  
Antiguo 12/06/2014, 08:15
 
Fecha de Ingreso: agosto-2013
Mensajes: 90
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: [Consulta] Mejor manera de implementar métodos para administrar una DataBa

Cita:
Iniciado por chuidiang Ver Mensaje
...
Muchas gracias por el dato, realmente muy buena información la de los Abator.

Doy por solucionado.

Gracias y saludos a todos.

Etiquetas: clase, database, implementar, manera, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:17.