O trecho de código abaixo, em Java Persistence API (JPA) ver...
@__________ public class PessoaId implements Serializable { String nome; String sobrenome; } @__________ public class Pessoa { @__________ PessoaId id; String endereco; }
Assinale a alternativa que preenche, correta e respectivamente, as lacunas do trecho de código acima.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a A - Embeddable – Entity – EmbeddedId. Agora, vamos entender o motivo dessa escolha ser a correta e o que cada termo significa dentro do contexto da Java Persistence API (JPA).
A JPA é utilizada para mapear objetos Java para tabelas de um banco de dados, de forma a gerenciar a persistência desses objetos de maneira simples e padronizada. Quando estamos lidando com chaves primárias compostas, ou seja, aquelas formadas por mais de uma coluna no banco de dados, o JPA requer uma abordagem especial para mapear esses campos, e é exatamente isso que a questão aborda.
O termo @Embeddable é utilizado para indicar que a classe marcada é uma classe "embutível" ou "incorporável", que é parte de uma entidade mas não é uma entidade por si só. Isto é, os campos dessa classe serão usados como colunas dentro de uma tabela de outra entidade. No caso da classe PessoaId
, ela contém os campos que formarão a chave primária composta e deve ser marcada como @Embeddable para indicar essa funcionalidade.
A anotação @Entity é utilizada para indicar que uma classe é uma entidade JPA, ou seja, que ela será mapeada para uma tabela no banco de dados. No código fornecido, a classe Pessoa
deve ser uma entidade, portanto, deve ser marcada com @Entity.
Por fim, a anotação @EmbeddedId é usada para especificar uma chave primária composta que é representada em uma classe de identificação separada. No caso da entidade Pessoa
, o campo id
é uma instância da classe PessoaId
, que foi marcada com @Embeddable. Portanto, o campo id
deve ser anotado com @EmbeddedId para indicar que ele contém a chave primária composta da entidade Pessoa
.
Assim, a combinação correta das anotações é Embeddable – Entity – EmbeddedId, que representa corretamente o mapeamento de uma chave primária composta em uma entidade JPA, conforme apresentado na alternativa A.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo