¿Cuál es la diferencia entre @Incrustado anotación técnica y @OneToOne anotación técnica, ya Incrustado en la clase de java contienen «Tiene una» relación en clase y con la ayuda de @Incrustado anotación debemos persistir el tiene un objeto en la base de datos. y en relación OneToOne también persisten los tiene un objeto en la base de datos.

5 Comentarios

  1. 9

    @OneToOne es para la asignación de dos DB tablas que están relacionadas con ellos una relación. Por ejemplo, un Cliente puede disponer de un registro en una tabla de Nombre.

    Alternativamente, si los nombre de campos en la tabla de Clientes (no en una tabla independiente) entonces es posible que desee un @incrustado. En la cara de ella sólo podría añadir el nombre de los campos como atributos estándar para la entidad de Cliente, pero puede ser útil si esas mismas columnas que aparecen en varias tablas (por ejemplo, usted podría tener el nombre de las columnas en una tabla Proveedor).

  2. 9

    Es la diferencia entre la composición y agregación. @Objetos incrustados se manejaron siempre dentro del ciclo de vida de sus padres. Si el padre está actualizado o eliminado, se actualiza o elimina. @OneToOne objetos puede imitar la composición a través de la cascadeType opción de su @Unirse a la anotación, pero por defecto que son agregadas, también conocido como de su ciclo de vida es independiente de la de sus padres, de los objetos.

  3. 4

    @Incrustado se utiliza con el Valor de los Objetos (los Objetos que tienen un significado sólo cuando se conecta a un Objeto) mientras que la asignación de uno a uno entre dos objetos tienen su propia existencia y significado.

    Para, por ejemplo,

    Objeto de valor y @Incorporado: Si tenemos una clase de Usuario y esta clase tiene un Objeto de dirección en él, puede ser considerado como un objeto de valor como la dirección por sí sola no tiene ninguna importancia hasta que a menos que estén asociados con un usuario. Aquí objeto de dirección puede ser anotados con @Incrustado.

    Asignación de uno a uno y @OneToOne: Si tenemos una clase de Usuario y esta clase tiene un «Padre» Objeto o una ‘Madre’ de objeto, queremos anotar el ‘Padre’ o ‘Madre’ instancia como @OneToOne como «Padre» o «Madre» tiene su significado y existencia y no son objetos de Valor a la clase de Usuario.

    Estrechamente relacionadas con la diferencia entre @OneToMany y @ElementCollection. Ambos se utilizan para guardar las variables de instancia de tipo de Colección en Java de la clase. La diferencia, @ElementCollection es para ser utilizado cuando los elementos de la Colección se guardan los Objetos de Valor mientras que @OneToMany se utiliza cuando el elments y objeto de tener bien definido el significado y existencia.

  4. 1

    @Embedded es normalmente para representar una clave principal compuesta como una clase incrustada:

    @Entity
    public class Project {
        @EmbeddedId ProjectId id;
         :
    }
    
    @Embeddable
    Class ProjectId {
        int departmentId;
        long projectId;
    }

    Los campos de la clave primaria se definen en una clase incrustada. La entidad contiene un único campo de clave principal que es anotado con @EmbeddedId y contiene una instancia de esa clase incrustada. Cuando se usa esta forma una IDENTIFICACIÓN separada de la clase no está definido porque la clase incrustada en sí mismo puede representar completa de valores de clave principal.

    @OneToOne es para la asignación de dos DB tablas que están relacionadas con ellos una relación. @El Id de la clave principal.

  5. 1

    Usar @OneToOne, sólo si los campos pueden ser reutilizados. De lo contrario, ir por @Embeddable.

    Una cita de Principio Hibernte, 3ª Edición:

    No hay nada intrínsecamente malo con la asignación de un uno-a-uno de la asociación entre dos entidades que no
    un componente de (es decir, incrustado en la otra. La relación es a menudo un poco sospechoso, sin embargo. Usted debe
    dar algún pensamiento a utilizando el incorporado técnica descrita previamente antes de usar el @OneToOne anotación.

    @Embeddable:
    Si los campos de una entidad (X) están contenidas dentro de la misma tabla como otra entidad (Y), entonces la entidad X es llamado «componente» en términos de hibernación o «embedded» en JPA términos. En cualquier caso, JPA o hibernate no permiten el uso de tabla 2 para almacenar este tipo de entidades asociadas.

    Por lo general, pensamos en la normalización de una tabla de datos cuando está siendo utilizada por más de una tabla. Ejemplo: Un Cliente (id, nombre, calle, ciudad, pin, punto de referencia) puede ser normalizada en atención al Cliente(id, nombre) y CustomerAddress(cust_id, la calle, la ciudad, el pin, punto de referencia). En este caso, se pueden reutilizar CustomerAddress mediante la vinculación de las mismas mediante cust_id con otras tablas. Pero si este la reutilización no es necesario en su aplicación, a continuación, sólo podemos mantener todas las columnas en una tabla.

    Así, una regla del pulgar es,

    • Si la reutilización -> @OneToOne,
    • Si no reutilizar -> @Embeddable

Dejar respuesta

Please enter your comment!
Please enter your name here