Tenho duas classes, uma Cliente e outra Compra, elas são as seguintes
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Tenho duas classes, uma Cliente e outra Compra, elas são as seguintes
Olá Tibério, tudo bem com você?
Na plataforma, temos um curso de JPA focado nesses relacionamentos, assim como sua continuação. O ideal é que você termine a Formação Java e depois continue para Formação Spring da qual esse curso faz parte.
Mas é possível (porém, não aconselhável) fazer o curso sem atender os pré-requisitos. O problema de explicar por aqui é que existem algumas configurações e diversos outros detalhes que são necessários para que o mapeamento das classes para entidades JPA ocorram sem problemas. Para quebrar o galho, duas classes que serão usadas durante os cursos que eu mencionei, tem o relacionamento que você descreveu.
Então, da mesma forma que (no seu caso) "um Cliente pode ter muitas Compras e uma Compra pode ter apenas um Cliente associado a ela", no exemplo usado no curso "uma Conta pode ter muitas Movimentações e uma Movimentação pode ter apenas uma Conta associado a ela".
Classe da Movimentacao:
@Entity --> Anotação que declara que essa classe é uma entidade JPA
public class Movimentacao {
@Id --> Indica o atributo que será a chave primária da tabela
@GeneratedValue(strategy = GenerationType.IDENTITY) --> Indica que é o banco de dados quem vai atribuir o valor da chave primária
private Long id;
@Enumerated(EnumType.STRING) --> Indica que esse Enum será salvo em formato de String na tabela
private TipoMovimentacao tipoMovimentacao;
private LocalDateTime data;
private String descricao;
private BigDecimal valor;
@ManyToOne --> Indica que o relacionamento entre a Movimentacao e a Conta é de MuitosParaUm ( * , 1 )
private Conta conta;
//Getters e Setters dos atributos privados omitidos
}Classe da Conta:
@Entity
public class Conta {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String titular;
private Integer agencia;
private Integer numero;
private Double saldo;
@OneToMany(mappedBy = "conta") --> Indica que o relacionamento entre a Conta e a Movimentacao é de UmParaMuitos ( 1 , * ), além de marcar o relacionamento como bidirecional (é um assunto complicado, então recomendo pesquisar)
private List<Movimentacao> movimentacoes;
//Getters e Setters dos atributos privados omitidos
}
Fez sentido? Qualquer coisa é só avisar! Forte abraço e bons estudos!!
Acho que entendi... então o relacionamento entre, no meu caso, Cliente e Compra se daria assim?
No Cliente.java :
@OneToMany(mappedBy = "cliente")
private List<Compra> compra;E no Compra.java :
@ManyToOne
private Cliente cliente;Certo?