Java Persistence API

Teste seus conhecimentos sobre o Java Persistence API

Exercício 1

Qual é a diferença entre JPA e Hibernate?

  • a)          Hibernate é especificação e JPA a implementação
  • b)          Ambos implementações de um ORM
  • c)          Ambos especificações de um ORM
  • d)            JPA é especificação e Hibernate a implementação  

Exercício 2

As anotações @Entity, @Id e @GeneratedValue servem, respectivamente, para:

  • a)      Associar uma classe a uma tabela, indicar a chave primária no banco e permitir que o banco gere automaticamente a chave, de maneira obrigatória.
  • b)         Associar uma classe a uma tabela, indicar chave primária no banco e permitir o desenvolvedor se encarregue pela geração da chave.
  • c)          Associar uma classe a uma tabela, indicar chave primária no banco e permitir que o banco gere automaticamente a chave, de maneira opcional.  

Exercício 03

Dado o trecho de código abaixo, diga: Qual é o estado da entidade Aluno neste momento?  

Aluno aluno = new Aluno();
aluno.setId(3);     // Conta com Id 3 já foi persistida anteriormente.
aluno.setNome("João Pedro");
aluno.setEndereco("Rua ….");
  •   a)      Managed (Gerenciado)
  • b)       Transient (Transiente)
  • c)        New (Novo)
  • d)        Removed (Removido)
  • e)        Detached (Desatachado)    

Exercício 04

Veja o código abaixo:  

EntityManager manager = new JPAUtil().getEntityManager();
Conta conta = new Conta();
conta.setId(1);
Query query = manager
               .createQuery("select m from Movimentacao m where m.conta=:pConta"
                       + " and m.tipoMovimentacao=:pTipo");
query.setParameter("pConta", conta);
query.setParameter("pTipo", TipoMovimentacao.ENTRADA);
List<Movimentacao> movimentacoes = query.getResultList();
manager.close()

  Assumindo que tudo é compilado e executado corretamente, qual das afirmações abaixo é verdadeira?

a)              A query busca todas as movimentações.

b)              A query busca todas as movimentações de entrada da conta 1.

c)               A query busca todas as movimentações sendo de entrada ou da conta 1.

d)              A query busca a primeira movimentação de entrada.    

Exercício 05

Apesar de termos utilizado anotações para realizarmos o mapeamento entre classes e tabelas, algumas configurações se fazem necessárias no persistence.xml. Uma configuração muito importante é a “unidade de persistência”, qual é a finalidade dessa configuração?  

  • a) Guardar as mensagens dos erros de validação
  • b) Definir a chave primeiro como auto increment
  • c) Guardar configurações específicas para um banco de dados
  • d) Configurar o mapeamento de relacionamentos  

Exercício 06

Dentro do ciclo de vida de um objeto na JPA, qual estado garante que todas as modificações feitas no objeto serão sincronizadas com o banco de dados?

  • a) Removed (Removido)
  • b) Transient (Transiente)
  • c) New (Novo)
  • d) Detached (Desatachado)
  • e) Managed (Gerenciado)  

Exercício 07

Observe o relacionamento bidirecional abaixo:  

@Entity
public class Aluno {
   @OneToOne
   private Perfil perfil;
}
@Entity
public class Perfil {
   @OneToOne(mappedBy="perfil")
   private Aluno aluno;
}

    Qual é o lado forte?

  • a) O atributo perfil na classe Aluno.
  • b) Não há lado forte.
  • c) O atributo aluno na classe Perfil.  

Exercício 08

Como se chama o método da interface javax.persistence.Query que devolve um único valor?

  • a)  getSingleResult()
  • b)  getUniqueResult()
  • c)   value()
  • d)  uniqueValue()
  • e) getOneResult()  

Exercício 09

Qual das afirmações abaixo NÃO é verdadeira?

  • a) Relacionamentos LAZY, ao ser inicializados, precisam do EntityManager aberto.
  • b) Relacionamentos para-muitos (*ToMany) são LAZY por padrão.
  • c)  Relacionamentos LAZY não podem ser carregados antecipadamente, nem pelo JPQL. d)              Relacionamentos LAZY serão inicializados sob demanda (ao acessar).  

Exercício 10

O método find() e o getReference() da interface EntityManager permitem que:

  • a) Encontre a relação entre o id passado e os objetos Transient da sessão com o banco.
  • b) Recuperemos o endereço de memória de um objeto através do seu id.
  • c) Recuperemos uma instância de uma entidade no banco de dados através do seu id.
  • d) Busquemos entre os objetos em memória, quais já foram persistidos.      

Gabarito:
1 – d 2 – c 3 – e 4 – b 5 – c 6 – e 7 – a 8 – a 9 – c 10 – c

Vinicius dos Santos

Apenas um apaixonado por Ciência da Computação e forma com que ela pode transformar vidas!

Deixe uma resposta