Esto debe ser bastante ingenuo, pero tengo una duda sobre cuándo usar @Entity
y @Embeddable
.@embeddable vs @entity para mapear una colección
Supongo que tengo una clase User
y Notification
.
@Entity
public class User{
//other properties
@onetomany
private List<Notification> notifications;
}
@Entity
public class Notification{
//properties
}
entiendo que habrá mesas para la clase User
y Notification
, y una tercera tabla de mapeo. ¿Qué pasa si lo hago así?
@Entity
public class User {
//other properties
@ElementCollection
private List<Notification> notifications;
}
@Embeddable
public class Notification{
//properties
}
Sé que esto no creará una tabla para Notification
. Pero aún puedo almacenar mis objetos de notificación. Fui a través de la documentation, pero par de dudas:
- ¿Se basa en si quiero ver la clase B como una tabla separada?
- ¿Existe una diferencia de rendimiento b/w al crear una tabla y un objeto incrustable?
- ¿Qué no puedo hacer con el objeto incrustable que puedo hacer con una tabla que no sea consultar directamente la tabla?
NOTAS
Para cualquiera que lea esta pregunta, este question también podrían ayudarte.
Supongo que puedo usar Embeddable con ElementCollection. No necesito usar @Embedded rt? – shazinltc
No obtuve su tercer punto. – shazinltc
3er punto: considere que la persona contiene la dirección (incrustada), si hay una tabla separada para ambos, puede eliminar directamente la dirección asociada, pero si la tabla de la persona tiene F.K. abordar, puede causar una violación de la restricción de integridad. – deepakraut