A técnica em informática Ana está implementando o módulo de ...
Observe abaixo o trecho principal da classe Departamento de TJTOApp:
@Entity @Table(name="DEPART") public class Departamento { @Id @Column(name=”ID_DEPART”) private Integer id;
@Column(name=”NM_DEPART”) private String nome;
private Integer qtdPessoas; }
Ana precisa que a propriedade qtdPessoas da classe Departamento seja calculada pela aplicação e não seja persistida na tabela DEPART.
Para especificar que a propriedade qtdPessoas seja ignorada pelo mecanismo de persistência JPA, Ana deve adicionar à qtdPessoas a anotação do JPA:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: B - @Transient
A questão aborda o conceito de anotações (annotations) no contexto do Java Persistence API (JPA), que é utilizado para mapear objetos Java para uma base de dados relacional. No código apresentado, temos uma classe Departamento que está sendo configurada para se tornar uma entidade persistente, o que significa que seus dados podem ser salvos em uma tabela de banco de dados.
O JPA utiliza anotações para determinar como as propriedades da classe devem ser tratadas em relação à persistência de dados. A questão em si foca em uma situação específica onde a propriedade qtdPessoas não deve ser persistida na tabela correspondente, ou seja, essa informação é apenas calculada e usada em tempo de execução, mas não deve ser armazenada no banco.
A anotação correta para esse caso é @Transient, que indica ao mecanismo de persistência do JPA que o campo marcado não deve ser persistido (ou seja, não deve ter uma coluna correspondente na tabela do banco de dados). Ao adicionar essa anotação à propriedade qtdPessoas, a técnica em informática Ana estará instruindo o JPA a ignorar esse campo durante as operações de persistência.
As outras opções não são adequadas para o caso em questão:
- @GeneratedValue é usada para especificar que o valor de um campo ou propriedade deve ser gerado automaticamente, geralmente para uma chave primária.
- @Temporal é usada para especificar o tipo de mapeamento de datas e horas (DATE, TIME, TIMESTAMP).
- @Enumerated é usada para especificar que uma propriedade deve ser persistida como um valor enumerado.
- @Column(nullable = true) é usada para definir características de uma coluna, como se ela pode ou não ser nula, mas não para impedi-la de ser persistida.
Em resumo, a anotação @Transient é a escolha correta para garantir que a propriedade qtdPessoas não seja incluída no mapeamento para a tabela de banco de dados, atendendo assim à necessidade da técnica Ana.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
JPA - Java Persistent API é uma ferramenta para Mapeamento Objeto Relacional.
O que isso significa ?
antigamente , para fazer uma conexão entre banco de dados e a linguagem Java , por exemplo , era necessário fazer várias transformações, uma vez que os bancos de dados trabalhavam com o modelo relacional e as linguagem Java , com Orientação a objetos. Essa falta de diálogo causava um excesso de trabalho para o desenvolvedor.
pensando nisso foram desenvolvidas algumas ferramentas que fazem esse trabalho para o desenvolvedor , ou seja o mapeamento objeto relacional.
para que a ferramenta possa executar esse trabalho, inserimos anotações no código, indicando as instruções que ela deve executar, conforme citado na questão.
@generatedvalue
A anotação @GeneratedValue é utilizada para informar que a geração do valor do identificador único da entidade será gerenciada pelo provedor de persistência
@transient
A anotação @Transient, é uma anotação do JPA, que serve para indicar que um atributo de uma classe não sera utilizado no banco de dados, ou em um método get para indicar que essa propriedade não será utilizada no banco de dados
@temporal
define o formato e precisão de tempo e data , ex: DD/MM/AAAA
@enumerated
O @Enumerated é usado para podermos instruir um provedor JPA a converter uma enumeração em seu valor ordinal ou String.
@column
usado para mapear uma coluna dentro do banco de dados
Ok que é uma questão que só pelo enunciado final da de responder de boa, mas convenhamos, que coisa ruim essas questão tudo bagunçada aqui do QCOCURSO. É de lascar.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo