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.
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