"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como definir relacionamentos com anotações no Hibernate 4 usando Spring?

Como definir relacionamentos com anotações no Hibernate 4 usando Spring?

Publicado em 17/11/2024
Navegar:168

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

Definindo relacionamentos com anotações no Hibernate 4 usando Spring

Para implementar vários tipos de relacionamentos usando anotações no Hibernate 4 para as classes fornecidas, Foo e Bar, vamos nos aprofundar nos detalhes.

Relacionamento unidirecional um-para-muitos:

Configure a classe Foo com a anotação @OneToMany e uma lista propriedade. Deixe a classe Bar inalterada. Isso estabelece um relacionamento um-para-muitos onde Foo pode ter vários objetos Bar associados, mas Bar não pode fazer referência a Foo.

Relacionamento bidirecional um-para-muitos (gerenciado por Foo.class ):

Use a anotação @OneToOne com cascade = CascadeType.ALL em Foo.class. Adicione uma anotação @JoinColumn especificando a coluna em Bar.class que deve ser usada para a junção. Para Bar.class, use a anotação @OneToOne e especifique mappedBy = "bar" para indicar que o relacionamento é gerenciado por Foo.class.

Relacionamento unidirecional um-para-muitos usando User- tabela de junção gerenciada:

Use a anotação @OneToMany com uma anotação @JoinTable para especificar uma tabela de junção separada. Defina as colunas de junção com anotações @JoinColumn em ambos os lados. Use uma classe adicional para representar a tabela de junção, se necessário.

Relacionamento bidirecional um-para-muitos usando mapeamento de chave estrangeira:

Em Foo.class, use @OneToMany(mappedBy = "bar") para mapear o relacionamento. Em Bar.class, use @ManyToOne(cascade = { CascadeTyep.PERSIST, CascadeType.MERGE, CascadeType.REFRESH }) com uma anotação @JoinColumn.

Bidirecional Many-to-Many usando Hibernate -owned Join Table:

Use @ManyToMany em Foo.class e Bar.class e use uma anotação @JoinTable para a tabela de junção, especificando as colunas de junção.

Muitos para muitos bidirecionais usando objeto de tabela de junção gerenciado pelo usuário:

Semelhante ao exemplo unidirecional um para muitos, use @OneToMany com uma anotação @JoinTable. Crie uma classe separada para representar a tabela de junção e mapeie o relacionamento em Foo.class e Bar.class usando @ManyToOne.

Determinando o tipo de busca:

Use fetchType .LAZY para atrasar o carregamento de coleções relacionadas até que sejam acessadas. Use fetchType.EAGER para carregar a coleção imediatamente, mas observe que isso pode afetar o desempenho. Considere usar Hibernate.initialize() em sua classe Service para inicializar manualmente coleções carregadas lentamente para casos de uso específicos.

Determinando a direção da cascata:

Use a anotação @Cascade para especifique opções em cascata. Geralmente, as mudanças em cascata na direção do relacionamento de propriedade. Evite atualizações ou exclusões em cascata do filho para o pai se isso não fizer sentido no contexto do aplicativo.

Remoção de órfãos:

Defina orphanRemoval = true no Anotação @OneToMany para que o Hibernate exclua automaticamente objetos órfãos (ou seja, aqueles não associados a nenhum outro objeto pai) quando eles forem removidos da coleção no objeto pai.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3