A técnica em informática Ana está implementando o módulo de ...

Próximas questões
Com base no mesmo assunto
Q1933774 Programação
A técnica em informática Ana está implementando o módulo de persistência da aplicação TJTOApp utilizando o JPA (Java Persistence API).
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:
Alternativas

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