SóProvas


ID
1700077
Banca
FCC
Órgão
TRT - 4ª REGIÃO (RS)
Ano
2015
Provas
Disciplina
Programação
Assuntos

Uma aplicação que trabalha com Hibernate e EJB possui uma classe POJO − Plain Old Java Object utilizada no mapeamento objeto-relacional com uma tabela do banco de dados. Nessa classe, há um atributo calculado chamado valorTotalPedido que, para ser utilizado apenas em tempo de execução e descartado após finalizar o seu serviço temporário, deverá ser anotado com

Alternativas
Comentários
  • Evitando a Persistência com @Transient


    Existem algumas situações em que um atributo é utilizado apenas como sendo um auxiliar. Por exemplo, atributos para valores calculados são utilizados apenas em tempo de execução e devem ser descartados após finalizar o seu serviço temporário. A especificação do EJB 3 prove a anotação @Transient para esses campos que não precisam ser armazenados na base de dados. Essa anotação não tem qualquer atributo. Sua utilização é bem simples bastando apenas adicionar a anotação na variável de instância ou no método getter apropriado.


    Fonte: http://www.devmedia.com.br/mapeamento-hibernate-configurando-tabelas-e-colunas/29526

  • A questão fala que o atributo valorTotalPedido é um atributo calculado que não será persistido e que será descartado ao finalizar o serviço. Logo vamos analisar cada anotação apresentada nos itens:


    (A) @Basic

    De acordo com a documentação da anotação @Basic disponível em (https://docs.oracle.com/javaee/6/api/javax/persistence/Basic.html), ela é a forma mais simples de mapeamento com uma coluna do banco de dados e pode ser aplicada num atributo persistente ou numa instancia de um dos tipos a seguir: Tipos primitivos, wrappers dos tipos primitivos, String, java.math.BigInteger, java.math.BigDecimal, java.util.Date, java.util.Calendar, java.sql.Date, java.sql.Time, java.sql.Timestamp, byte[], Byte[], char[], Character[], enums, e qualquer outro tipo que implemete java.io.Serializable.

    Item errado. A anotação @Basic persiste no banco de dados e por isso não é recomendada para criar atributos calculados.


    (B) @Embedded

    De acordo com a documentação (https://docs.oracle.com/javaee/6/api/javax/persistence/Embedded.html), a anotação @Embedded especifica um campo ou atributo de uma entidade cujo o valor é uma instancia de uma classe embarcável(embedded class). A classe embarcável precisa ser marcada pela classe @Embeddable.

    Item errado. A anotação @Embeddable persiste os dados e aninha informações em um atributo, não é recomendável para criar o atributo calculado mencionado na questão


    (C) @TemporaryAttribute

    Item Errado. Esta anotação não existe. Vide a lista delas aqui https://docs.oracle.com/javaee/6/api/javax/persistence/package-summary.html


    (D) @GeneratedValue

    De acordo com a documentação https://docs.oracle.com/javaee/6/api/javax/persistence/GeneratedValue.html, esta anotação é usada para especificar a estratégia de geração dos valores das chaves primárias.

    Item Errado. Esta anotação não serve para criar campos calculados. Sua aplicação é a geração de valores para chaves primárias


    (E) @Transient

    De acordo com a documentação https://docs.oracle.com/javaee/6/api/javax/persistence/Transient.html, esta anotação especifica um campo ou atributo que não é persistente.

    Item Correto.

  • Significado de Transiente

    Que não permanece; que passa; transitório, passageiro: sensações transientes.

    Que não dura; momentâneo, efêmero: paixões transientes.

    Letra B.