Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/11/2010, 19:25
wblackday
 
Fecha de Ingreso: septiembre-2009
Ubicación: Guatemala
Mensajes: 10
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Inserción por lotes en una relacion muchos a muchos con hibernate

Que tal Marcos!!! Te respondo:
Cita:
Iniciado por tutorialjava Ver Mensaje
Y Como lo estas intentando hacer?
Bueno la verdad, hace poco descubri Hibernate y me parecio fantastico jajajaj.... pero por la misma falta de experiencia se me ocurrieron algunas ideas (las cuales hasta cierto puntos me parecen ineficientes o tediosas).... te menciono una de ellas:
Tengo 3 clases Prospecto, Telefono y ProspectoTelefono; cuyos atributos para cada una de ellas son los siguientes:
Código java:
Ver original
  1. public class Prospecto implements java.io.Serializable {
  2.     private static final long serialVersionUID = 1L;
  3.    
  4.     private ProspectoId id;
  5.     private Ocupacion ocupacion;
  6.     private Origen origen;
  7.     private String nombres;
  8.     private String apellidos;
  9.     private boolean socio;
  10.     private Date fechaLlamada;
  11.     private boolean asitencia;
  12.     private Byte tiempoReciclaje;
  13.     private Set<ProspectoTelefono> prospectoTelefonos = new HashSet<ProspectoTelefono>(0);
Código java:
Ver original
  1. public class Telefono implements java.io.Serializable {
  2.     private static final long serialVersionUID = 1L;
  3.    
  4.     private TelefonoId id;
  5.     private CodigoArea codigoArea;
  6.     private String estado;
  7.     private String sufijo;
  8.     private Set<ProspectoTelefono> prospectoTelefonos = new HashSet<ProspectoTelefono>(0);
Código java:
Ver original
  1. public class ProspectoTelefono implements java.io.Serializable {
  2.     private static final long serialVersionUID = 1L;
  3.    
  4.     private ProspectoTelefonoId id;
  5.     private Telefono telefono;
  6.     private Prospecto prospecto;
  7.     private String estado;
  8.     private boolean citaConcertada;
Creo los objetos Prospecto, Telefono, ProspectoTelefono y posteriormente mando a grabar con session.save() a cada uno de mis objetos. Esto significaria 3 llamadas a mi DB y estoy hablando de miles de objetos mmm.... bueno talvez menos dado que uso lotes, como dije antes creo que es muy ineficiente.

Cita:
Iniciado por tutorialjava Ver Mensaje
Bueno, si hablas de una relacion de muchos a muchos estas hablando de dos entidades, no es asi?

Pero tu mencionas que tienes 3, Telefono, Prospecto y ProspectoTelefono...
La tabla ProspectoTelefono me sirve para romper la relación muchos a muchos que existe entre las tablas Prospecto y Telefono
Cita:
Iniciado por tutorialjava Ver Mensaje
Si lo que quieres es hacer una relacion por un lado entre Telefono y TelefonoProspecto y por otro lado entre Prospecto y ProspectoTelefono, entonces no se trata de una relacion muchos a muchos sino de dos relaciones uno a muchos.

Para ello lo que tiens que hacer es lo siguiente:

1º Llena primero los atributos de la entidad Telefono

Telefono t = new Telefono(llena los atributos);

2º Llena luego los atributos de la entidad Prospecto

Prospecto p = new Prospecto(llena los atributos);

3º Llena los atributos de ProspectoTelefofono
ProspectoTelefono pt = new ProspectoTelefono(t, p);

4º Atribuir a Telefono y Prospecto la entidad ProspectoTelefonoRelacionada, por ej.
t.setProspectoTelefono(pt);
p.setProspectoTelefono(pt);

4º Haz el persist de Prospecto telefono en tu sesion

em.persist(pt);

Listo, deberia funcionar.
En está parte que mencionas me surge una duda : ¿Es posible crear los objetos Prospecto, Telefono y ProspectoTelefono y al momento de darle un save o persist a mi objeto ProspectoTelefono automaticamente se hacen persistentes los objetos Prospecto y Telefono?

Gracias Marcos por tu respuesta .