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

Concepto Hibernate

Estas en el tema de Concepto Hibernate en el foro de Java en Foros del Web. Hola todos, recien acabo de empezar con Hibernate y me he atascado en lo siguiente, si alguien me puede ayudar en el concepto o idea ...
  #1 (permalink)  
Antiguo 31/08/2011, 08:15
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 8 meses
Puntos: 78
Concepto Hibernate

Hola todos,
recien acabo de empezar con Hibernate y me he atascado en lo siguiente, si alguien me puede ayudar en el concepto o idea se lo agradecería mucho.

La siguiente tabla es de inserción de datos, tabla única.
TABLA A
+----+------------+
| ID | Tipo | MENSAJE|
+----+------------+
| 1 | ERROR | Ha fallado|
| 2 | INFO | Todo OK..|
| 3 | CRIT | Ojo... |
| 4 | WARN | Atencion..|
| 5 | WARN | etc....... |
| 6 | WARN | etc....... |
+----+------------+


La siguiente tabla es estática, nunca se insertan datos.
TABLA B
+----+------------+
| ID | Tipo | IMAGEN |
+----+------------+
| 1 | ERROR | error.jpg |
| 2 | INFO | info.jpg |
| 3 | CRIT | crit.jpg |
| 4 | WARN | warning.jpg|
+----+------------+

La idea es relacionarlas SOLAMENTE para un SELECT, del tipo...:

SELECT * FROM A, B WHERE A.Tipo=B.Tipo

Y así obtener los datos:

ERROR, Ha fallado, error.jpg
INFO, Todo OK.., info.jpg
......

Debo relacionarlas forzosamente con un Many-To-One? (varios mensajes, pueden tener un mismo Tipo (no?))

Mi idea principalmente era no relacionarlas, hacer los INSERTS de la Tabla A y luego un SELECT de ambas. Todos los intentos que hago son fallidos.
¿Me estoy equivocando en el concepto? ¿Cual es la idea para hacer lo que quiero?

Muchas gracias a todos y un saludo.
  #2 (permalink)  
Antiguo 31/08/2011, 08:24
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Concepto Hibernate

Muestranos el codigo de cuando intentaste hacer la inserción en la tabla A.
  #3 (permalink)  
Antiguo 31/08/2011, 09:09
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 8 meses
Puntos: 78
Respuesta: Concepto Hibernate

Hola Ronruby,
gracias por responder.
Código Javascript:
Ver original
  1. public static void main(String[] args) {
  2.         Session session = HibernateUtil.getSessionFactory().openSession();
  3.         Transaction transaction = null;
  4.         try {
  5.             transaction = session.beginTransaction();
  6.            
  7.             Logmsg l = new Logmsg("ERR", "Ha habido un error", "20110811", "1320", "User1");
  8.            
  9.             session.save(l);
  10.            
  11.             transaction.commit();
  12.  
  13.             System.out.println("Insercion OK");
  14.            
  15.         } catch (HibernateException e) {
  16.             transaction.rollback();
  17.             e.printStackTrace();
  18.         } finally {
  19.             session.close();
  20.         }
  21.  
  22.     }

El código de inserción es muy sencillo, actualmente no tengo ninguna relación con ninguna otra tabla.
La idea es hacer un SELECT con la tabla B, pero no se cómo relacionarlas para hacer únicamente un SELECT, no quiero hacer inserciones con la Tabla B relacionada, pues ésta es estática.

¿Alguna idea?

Gracias y un saludo.
  #4 (permalink)  
Antiguo 31/08/2011, 10:53
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 16 años, 3 meses
Puntos: 15
Respuesta: Concepto Hibernate

con hql lo puedes hacer por ejemplo

Código JAVA:
Ver original
  1. Session session = HibernateUtil.getSessionFactory().openSession();
  2. String hql    = "from objeto_tabla ";
  3.  
  4. List<objeto_tabla> lista = new  ArrayList<objeto_tabla>();
  5.  
  6. lista   = session.createQuery(hql).list();
  7.  
  8. y simplemente seria recorrer la lista en un for y hacer lo que quieras
  9.  
  10. for(objeto_tabla obj: lista) {
  11. //Tu programacion
  12. }

lista es una lista del objeto de la tabla que te mapeo hibbernate, esto se llama hql asi puedes consultar es muy parecido a sql o puedes utilizar algo que se llama Criteria.

espero haberte ayudado.
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #5 (permalink)  
Antiguo 31/08/2011, 11:21
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 8 meses
Puntos: 78
Respuesta: Concepto Hibernate

Hola miguec04,
El problema que se me presenta es al hacer la consulta sobre dos objetos, es decir, dos tablas. En el ejemplo que me pones sería adecuado para una consulta sobre una tabla, pero se puede recoger la salida de dos objetos? (tablas)
Se puede crear un objeto que apunte a ambas tablas?
Y entonces recoger este objeto.

Muchas gracias por todo y un saludo.
  #6 (permalink)  
Antiguo 31/08/2011, 12:39
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 16 años, 3 meses
Puntos: 15
Respuesta: Concepto Hibernate

SI CLARO

seria algo así, como te dije es muy parecido a sql averigua por HQL

Código JAVA:
Ver original
  1. Session session = HibernateUtil.getSessionFactory().openSession();
  2. String hql    = "select ot.campo1,ot.campo2, ot2.campo1 from objeto_tabla ot inner join ot.objeto_tabla_2 ot2";
  3.  
  4. List<Object[]> lista = new  ArrayList<Object[]>();
  5.  
  6. lista   = session.createQuery(hql).list();
  7.  
  8. //y simplemente seria recorrer la lista en un for y hacer lo que quieras
  9.  
  10. for(Object[] obj: lista) {
  11. //Tu programacion
  12. String campo1  = (String) obj[0];
  13. String campo2  = (String) obj[1];
  14. }

de esa forma podriamos mostrar los campos que necesitamos y optimizar la consulta, y esa consulta me retornaria una lista de un vector de objetos, en esta lista se me retornaria un objeto de tres indices.

espero haberme dado a entender
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #7 (permalink)  
Antiguo 01/09/2011, 01:09
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 8 meses
Puntos: 78
Respuesta: Concepto Hibernate

Hola miguec04,
muchas gracias! Ese era justamente mi problema y solución!
Yo metía toda la consulta en una lista, y al iterarla únicamente lo hacía hacia un objeto definido (ObjetoA), desconocía completamente la posibilidad de iterar como me has enseñado para recoger el array de objetos que en mi caso es de 2. (o los que fueran ya)

Muchas gracias por todo, me has ayudado muchísimo a entender como funcionaba este tipo de consultas. Me documentaré más a cerca de HQL, pues yo iba con la idea del SQL y eso no me sacaba de mi error.

Un saludo!

Etiquetas: concepto, hibernate
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 12:09.