"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo definir relaciones con anotaciones en Hibernate 4 usando Spring?

¿Cómo definir relaciones con anotaciones en Hibernate 4 usando Spring?

Publicado el 2024-11-17
Navegar:660

How to Define Relationships with Annotations in Hibernate 4 using Spring?

Definición de relaciones con anotaciones en Hibernate 4 usando Spring

Para implementar varios tipos de relaciones usando anotaciones en Hibernate 4 para las clases proporcionadas, Foo y Bar, profundicemos en los detalles.

Relación unidireccional uno a muchos:

Configure la clase Foo con la anotación @OneToMany y una Lista propiedad. Deje la clase Bar sin cambios. Esto establece una relación de uno a muchos donde Foo puede tener múltiples objetos Bar asociados, pero Bar no puede hacer referencia a Foo.

Relación bidireccional uno a muchos (administrada por Foo.class ):

Utilice la anotación @OneToOne con cascade = CascadeType.ALL en Foo.class. Agregue una anotación @JoinColumn que especifique la columna en Bar.class que debe usarse para la unión. Para Bar.class, use la anotación @OneToOne y especifique mappedBy = "bar" para indicar que la relación es administrada por Foo.class.

Relación unidireccional uno a muchos usando User- Tabla de unión administrada:

Emplee la anotación @OneToMany con una anotación @JoinTable para especificar una tabla de unión separada. Defina las columnas de unión con anotaciones @JoinColumn en ambos lados. Utilice una clase adicional para representar la tabla de combinación, si es necesario.

Relación bidireccional uno a muchos mediante asignación de clave externa:

En Foo.class, utilice @OneToMany(mappedBy = "bar") para mapear la relación. En Bar.class, use @ManyToOne(cascade = { CascadeTyep.PERSIST, CascadeType.MERGE, CascadeType.REFRESH }) con una anotación @JoinColumn.

Bidireccional de muchos a muchos usando Hibernate -Tabla de unión administrada:

Use @ManyToMany tanto en Foo.class como en Bar.class, y use una anotación @JoinTable para la tabla de unión, especificando las columnas de unión.

Bidireccional de muchos a muchos usando el objeto de tabla de unión administrado por el usuario:

Similar al ejemplo unidireccional de uno a muchos, use @OneToMany con una anotación @JoinTable. Cree una clase separada para representar la tabla de unión y asigne la relación tanto en Foo.class como en Bar.class usando @ManyToOne.

Determinación del tipo de recuperación:

Usar fetchType .LAZY para retrasar la carga de colecciones relacionadas hasta que se acceda a ellas. Utilice fetchType.EAGER para cargar la colección inmediatamente, pero tenga en cuenta que puede afectar al rendimiento. Considere usar Hibernate.initialize() en su clase de Servicio para inicializar manualmente colecciones cargadas de forma diferida para casos de uso específicos.

Determinación de la dirección de la cascada:

Utilice la anotación @Cascade para especificar opciones en cascada. Generalmente, los cambios en cascada en la dirección de la relación de propiedad. Evite actualizaciones o eliminaciones en cascada del niño al padre si no tiene sentido en el contexto de la aplicación.

Eliminación de huérfanos:

Establezca orphanRemoval = true en el Anotación @OneToMany para que Hibernate elimine automáticamente los objetos huérfanos (es decir, aquellos que no están asociados con ningún otro objeto principal) cuando se eliminan de la colección del objeto principal.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3