1
resposta

Operações em cascata?

Como ficam os métodos para inserir, remover e atualizar, já que elas envolvem outros relacionamentos? Dá para fazer com que as operações sejam aplicadas nos relacionamentos de forma automatica? Por exemplo no caso do remover cliente: como o cliente tem uma conta, então tenho que remover o cliente, sua respectiva conta e todas as movimentações dela. Afinal, não faz sentido deixá-las no banco, certo? Então, como fica nessse caso? A JPA remove os relacionamentos se eu remover só o cliente ou tenho que fazer tudo na mão, provavelmente chamando as DAOs de outras classes dentro do método?

1 resposta

Olá, Rafaell!

Ótima pergunta! Quando lidamos com relacionamentos em cascata na JPA, podemos definir como as operações de inserir, remover e atualizar serão aplicadas nos relacionamentos automaticamente.

No caso específico da remoção de um cliente que possui uma conta e movimentações, podemos utilizar a opção de cascata para que a JPA remova automaticamente esses relacionamentos quando o cliente for removido. Para isso, basta utilizar a anotação @CascadeType.REMOVE no relacionamento entre o cliente e a conta.

Por exemplo, suponha que você tenha uma classe Cliente e uma classe Conta, onde um cliente possui uma conta. A anotação ficaria assim:

@Entity
public class Cliente {

    // outros atributos e anotações

    @OneToOne(cascade = CascadeType.REMOVE)
    private Conta conta;

    // getters e setters

}

Dessa forma, quando você remover um cliente, a JPA também irá remover automaticamente a conta relacionada a ele.

No entanto, é importante lembrar que o uso de cascata deve ser feito com cuidado, pois pode levar a operações indesejadas. É necessário avaliar bem o seu modelo de dados e as implicações de cada operação em cascata.

Espero ter ajudado e bons estudos!