java - example - ¿Hibernación de muchas a muchas relaciones o conjunto de listas?
hibernate set (2)
¿Qué tal el requisito de singularidad de Set? ¿Esto no obliga a Hibernate a recuperar todos los objetos cada vez que se agrega uno a la colección para asegurarse de que uno recién agregado sea único? Una lista no tendría esta limitación.
Tengo una relación de muchos a muchos en mi Java beans. Cuando uso List
para definir mis variables como:
@Entity
@Table(name="ScD")
public class Group extends Nameable {
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.EAGER)
@JoinColumn(name="b_fk")
private List<R> r;
//or
private Set<R> r;
Me sale ese error
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0''
...
Cuando uso Set
todo parece funcionar bien.
Quiero preguntar que al usar muchas o muchas relaciones, ¿cuál de ellas usar para la List
o Set
concepto lógico (debido a que la lista puede tener duplicados y establecidos, pero qué pasa con el rendimiento y otros problemas)?
Desde la perspectiva de bases de datos relacionales este es un conjunto. Las bases de datos no conservan el orden y el uso de una List
tiene sentido, el orden en ellas no se especifica (a menos que se utilicen las denominadas colecciones indexadas ).
Usar un Set
también tiene grandes implicaciones de rendimiento. Cuando se usa List
, Hibernate usa la colección PersistentBag
debajo, que tiene algunas características terribles. Es decir: si agrega una nueva relación, primero eliminará todas las existentes y luego las volverá a insertar + la nueva. Con Set
solo inserta el nuevo disco.
En tercer lugar, no puede tener varias List
en una entidad, ya que obtendrá infame al mismo tiempo que no puede obtener la excepción de múltiples bolsas .
Ver también: