Relacional
OneToMany
Explorando a relação entre classes e entidades
Explicação
A anotação @OneToMany do JPA é usada para definir um relacionamento de um para muitos entre duas entidades. Esse tipo de relacionamento implica que uma instância de uma entidade (o "lado um") pode estar associada a várias instâncias de outra entidade (o "lado muitos").
@OneToMany
Funcionamento:
- Quando a anotação 
@OneToManyé aplicada a um atributo de uma entidade, ela indica que esse atributo representa uma coleção de entidades relacionadas. - A coleção geralmente é uma lista, conjunto ou outra estrutura de dados que armazena várias instâncias da entidade associada.
 - No banco de dados, a relação é mapeada com uma chave estrangeira na tabela da entidade do "lado muitos", que faz referência à chave primária da entidade do "lado um".
 
Aspectos importantes:
- Lado "um" e lado "muitos": O lado "um" é o lado onde a anotação 
@OneToManyé aplicada, e o lado "muitos" é onde a chave estrangeira está armazenada. - Bidirecionalidade: O relacionamento pode ser bidirecional, ou seja, você pode ter um mapeamento no lado "muitos" com a anotação 
@ManyToOne, indicando que várias instâncias de uma entidade estão associadas a uma única instância da outra. - Cascata: Quando a relação é bidirecional, você pode configurar a anotação 
@OneToManypara realizar operações de cascata (como persistir ou excluir) nos elementos da coleção automaticamente, ao realizar operações na entidade do lado "um". 
Parâmetros comuns:
- mappedBy: Este atributo é usado no lado "um" para especificar o nome do campo na entidade do lado "muitos" que é responsável pelo relacionamento. Esse parâmetro indica que a relação é mapeada pelo outro lado.
 - cascade: Define as operações de cascata a serem aplicadas no relacionamento, como persistir, atualizar ou excluir as entidades associadas quando a entidade principal for manipulada.
 
Em resumo, a anotação @OneToMany é usada para definir um relacionamento de "um para muitos" entre duas entidades, sendo importante para mapear e gerenciar a relação entre elas, além de garantir que as operações de persistência sejam realizadas de maneira eficiente e adequada.
O uso da anotação 
mappedBy no JPA pode gerar um risco de autoacoplamento entre as entidades, especialmente quando o relacionamento entre elas é complexo ou mal projetado. O conceito de autoacoplamento se refere à dependência excessiva entre duas entidades que podem ser difíceis de manter, evoluir ou testar devido à forte ligação entre elas.Exemplo
import jakarta.persistence.*;
@Entity
public class Cliente {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String nome;
    // Atributo que vai armazenar a lista de endereços do cliente
    @OneToMany(cascade = CascadeType.ALL)
    @JoinColumn(name = "cliente_id")  // Define a chave estrangeira diretamente na tabela 'Endereco'
    private List<Endereco> enderecos;
}