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

Relación con Hibernate

Estas en el tema de Relación con Hibernate en el foro de Java en Foros del Web. Hola, ¿para hacer relaciones entre tablas con Hibernate es necesario hacer algo en las tablas? es decir antes de crear los mapping files y los ...
  #1 (permalink)  
Antiguo 28/06/2011, 07:17
 
Fecha de Ingreso: febrero-2010
Ubicación: Gran Canaria
Mensajes: 280
Antigüedad: 14 años, 8 meses
Puntos: 12
Relación con Hibernate

Hola,

¿para hacer relaciones entre tablas con Hibernate es necesario hacer algo en las tablas? es decir antes de crear los mapping files y los pojos, para que estos al hacer ingeniería inversa se creen o hay que hacerlos después de crear los mapping files y los pojos a mano, sin tocar nada en la BD?

¿cómo lo hacen ustedes?

Saludos
  #2 (permalink)  
Antiguo 28/06/2011, 09:10
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 11 meses
Puntos: 41
Respuesta: Relación con Hibernate

"para hacer relaciones entre tablas con Hibernate"? No estoy seguro a que te referís con eso, si pretendés crear FK's a partir de tu mappeo, o al MAPPEO DE OBJETOS concretamente..


con un ORM podés hacer ambas cosas:
1. A partir de un esquema de base de datos crear los Clases (POJOS, los mapeos de cada clase y el hibernate.cfg.xml)
2. O de tus Clases mapeadas crear el esquema de tablas en la DB (Hibernate es el único que encima tiene update de schema, por si hay modificaciones).

"es necesario hacer algo en las tablas"
"sin tocar nada en la BD?"
Usando la 2da opción que te mencioné difícilmente la DB quede como quieras, tenés que tener mucha experiencia en mappeo y Annotations.
__________________
BadProgrammerException!

Última edición por FiruzzZ; 28/06/2011 a las 09:17
  #3 (permalink)  
Antiguo 28/06/2011, 16:03
 
Fecha de Ingreso: febrero-2010
Ubicación: Gran Canaria
Mensajes: 280
Antigüedad: 14 años, 8 meses
Puntos: 12
Respuesta: Relación con Hibernate

Creo que me expresé mal., gracias por la respuesta.

A ver ahora,

Tengo una tabla, Incidencias, y quiero que el usuario pueda relacionar incidencias a otra ya creada (vamos a llamarla la incidencia padre). Para ello supongo que tendría que crear otra tabla y crear ahí algunos campos, esa es mi duda, que campos tendría que agregar.

Un ejemplo sería:

idIncidencia 25 >>> y tendría relacionadas >>> 28, 32, 36, 43

Supongo que esta es una relación one-to-many ¿o es many-to-many?

Pienso utilizar un Set para esto y que sea Unidireccional.

Con el ORM Hibernate me defiendo. Como tengo que hacer los archivos de mapeo y que tengo que agregar/editar también lo tengo claro, alguna duda, pero me defiendo.

Saludos
  #4 (permalink)  
Antiguo 28/06/2011, 17:34
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 11 meses
Puntos: 41
Respuesta: Relación con Hibernate

No termino de entender donde está tu problema:
- Si no sabés como diseñar el esquema de tablas.
- Si no sabés mappear una relación OneToMany (Para crear ésta, lo mínimo que debe tener la tabla2 es una FK de la tabla1).

Viendolo desde Incidencia > InciPadre
"1 registro de Incidencia puede estar asociado a 1 o mas registros de IncidenciaPadre".
y desde InciPadre a Incidencia
"1 registro de IncidenciaPadre pertenece/se asocia SOLO A 1 de Incidencia"


También mencionas no saber que campos debe tener tu tabla, acá es donde mas me perdés, sos el único que sabe/debería saber que función va cumplir esta (IncidenciaPadre) en relación a incidencias, que campos debe tener.
__________________
BadProgrammerException!
  #5 (permalink)  
Antiguo 28/06/2011, 18:11
 
Fecha de Ingreso: febrero-2010
Ubicación: Gran Canaria
Mensajes: 280
Antigüedad: 14 años, 8 meses
Puntos: 12
Respuesta: Relación con Hibernate

Lo primero, que no sé como diseñar el esquema de tablas.

Cita:
También mencionas no saber que campos debe tener tu tabla, acá es donde mas me perdés, sos el único que sabe/debería saber que función va cumplir esta (IncidenciaPadre) en relación a incidencias, que campos debe tener.
Eso que no se como diseñar la segunda tabla, solo quiero guardar los ID de las incidencias relacionadas, nada más.

Saludos
  #6 (permalink)  
Antiguo 29/06/2011, 00:50
 
Fecha de Ingreso: mayo-2011
Mensajes: 79
Antigüedad: 13 años, 5 meses
Puntos: 14
Respuesta: Relación con Hibernate

Viendo lo que pretendes lo que has de hacer es crearte 2 tablas en BBDD:

IncidenciasPadre -> Con sus campos correspondientes
IncidenciasHijas -> Sus campos propios mas un ID que sea el de la padre a la que pertenece.

La relación será 1-N entre incidencias padres y las hijas.

Luego ya en hibernate tendras la coleccion o set que establece el mapeo anterior.

Es lo habitual en un sistema de gestión de incidencias 1 padre puede tener n hijas, es una relación 1-N.

Saludos
__________________
Web Admin:
http://www.coretec.es
Tutoriales, Noticias y Recursos Liferay y J2EE
  #7 (permalink)  
Antiguo 29/06/2011, 04:58
 
Fecha de Ingreso: febrero-2010
Ubicación: Gran Canaria
Mensajes: 280
Antigüedad: 14 años, 8 meses
Puntos: 12
Respuesta: Relación con Hibernate

Gracias harkonen,
Cita:
IncidenciasHijas -> Sus campos propios mas un ID que sea el de la padre a la que pertenece.
¿puedo hacerlo sin añadir campos propios a la tabla incidenciasHijas? solo con un campo ID para la incidencia hija y otro para el ID de la incidencia padre.

Por ejemplo:

Tabla incidencias >> ID - Titulo, Hora, Dia, Agente

Tabla relacionPadre-Hija >> ID_Padre , ID_Hija

Saludos
  #8 (permalink)  
Antiguo 29/06/2011, 10:03
 
Fecha de Ingreso: junio-2011
Mensajes: 16
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Relación con Hibernate

Si puedes hacerloa asi , pues si lo aguardas como una coleccion , ya sea un set o una list, al momento de guardar el registro padre podras agregar los registros hijos que tu desees.
  #9 (permalink)  
Antiguo 29/06/2011, 14:15
 
Fecha de Ingreso: febrero-2010
Ubicación: Gran Canaria
Mensajes: 280
Antigüedad: 14 años, 8 meses
Puntos: 12
Respuesta: Relación con Hibernate

Pues lo voy a intentar así.

Gracias ya comento si me fue bien o no.

Saludos

Etiquetas: 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 08:08.