Guia de Java: JPA, EJB e Persistência de Dados
Classificado em Computação
Escrito em em
português com um tamanho de 11,25 KB
Questões Discursivas
1. Quais as diferenças entre um ArrayList e um TreeSet?
R: Um ArrayList permite duplicatas e a ordem de inserção dos elementos é mantida. Já o TreeSet não permite duplicatas e a ordem de inserção dos elementos não é mantida.
2. Explique o que é o Mapeamento Objeto-Relacional (ORM).
R: É um mecanismo sofisticado para mapeamento de objetos Java em memória para tabelas do banco de dados. Permite persistir objetos em bancos de dados relacionais e realizar pesquisas complexas, onde cada instância do objeto corresponde a um registro no banco de dados.
3. Quando devem ser utilizados EJBs em uma aplicação?
R:
- Quando a aplicação deve ser escalável, ou seja, quando possuir um número grande de usuários ou quando a aplicação estiver distribuída em várias máquinas;
- Quando transações são necessárias para garantir a integridade dos dados;
- Quando as aplicações tiverem um grande número de clientes.
4. Explique o que é um Session Bean e um Message-Driven Bean.
R:
- Session Bean (Beans de Sessão): Não são persistentes. São frequentemente utilizados para gerenciar as interações entre os beans de entidade e representam um fluxo de tarefa ou um processo de negócio.
- Message-Driven Beans: São utilizados para comunicação com outros aplicativos através de um serviço de mensagem (JMS), recebendo mensagens de forma assíncrona.
5. Explique o que é uma unidade de persistência no JPA.
R: É um conjunto de classes mapeadas para um banco de dados relacional. Esse mapeamento é feito através de um arquivo descritor de implantação chamado persistence.xml, que é gravado na pasta META-INF e pode conter a configuração de várias unidades de persistência.
6. O CRUD é um conjunto de operações de persistência que podem ser realizadas em um repositório de dados. O que significa a sigla CRUD?
R:
- Create: INSERT
- Retrieve (Read): SELECT
- Update: UPDATE
- Delete: DELETE
7. Explique o que é um POJO.
R: Plain Old Java Objects — São objetos Java que seguem um desenho simplificado em contraposição aos EJBs, por exemplo. Um JavaBean é um POJO que segue definições rígidas de estrutura (construtor default sem argumentos e métodos que seguem o padrão de getters e setters para seus atributos).
9. Explique o contexto de persistência (Persistence Context).
R: É um ambiente (sessão) que envolve o conjunto de instâncias de entidades gerenciadas pelo EntityManager.
10. Explique as diferenças entre um Stateful Session Bean e um Stateless Session Bean.
R: O Stateful Session Bean mantém o estado conversacional entre as chamadas de um cliente ao servidor, e não são mantidos pools de instâncias. Já o Stateless Session Bean não mantém nenhum estado conversacional entre o cliente e o servidor, sendo mantidos em pools de instâncias.
Questões de Múltipla Escolha
1. Qual import é necessário para implementar Listeners?
- a. import javax.swing.*;
- b. import java.awt.*;
- c. import javax.awt.*;
- d. import java.awt.event.*;
2. Qual é o método utilizado para carregar o driver JDBC?
- a. Connection.createStatement()
- b. Class.forName()
- c. Class.loadDriver
- d. Connection.DriverManager()
3. Qual annotation deve ser utilizada numa interface Session Beans para definir que seus métodos serão acessíveis localmente?
- a. @Local
- b. @Stateless
- c. @Remote
- d. @Stateful
4. Qual dos servidores abaixo é um exemplo de servidor EJB utilizado na camada de negócio?
- a. Internet Information Service
- b. PersistServer
- c. Java Server Business Application
- d. JBoss
5. Qual annotation deve-se utilizar para declarar uma classe como classe persistente?
- a. @AutoNumber
- b. @Entity
- c. @Identity
- d. @GeneratedValue
6. Quais são os tipos de Beans de Sessão (Session Beans)?
- a. EntityBeans e MessageDriven
- b. Persist e Transient
- c. Stateful e Stateless
- d. Temporário e Permanente
7. Qual comando é utilizado para desfazer as alterações no banco de dados?
- a. em.getTransaction().save()
- b. em.getTransaction().commit()
- c. em.getTransaction().close()
- d. em.getTransaction().rollback()
8. Em qual camada fica o servidor EJB?
- a. Camada Cliente
- b. Camada de Negócio
- c. Camada EIS
- d. Camada Web
9. Sobre a collection TreeSet podemos afirmar que:
- a. É um conjunto de elementos ordenados, no qual não existem elementos repetidos.
- b. É um conjunto de elementos não ordenados, no qual não existem elementos repetidos.
- c. É um conjunto de elementos ordenados. Há elementos repetidos.
- d. É um conjunto de elementos não ordenados. Há elementos repetidos.
10. Sobre o TreeSet podemos afirmar:
- a. Conjunto de elementos ordenados. Não há elementos repetidos.
- b. Conjunto de elementos não ordenados. Não há elementos repetidos.
- c. Conjunto de elementos ordenados. Há elementos repetidos.
- d. Conjunto de elementos não ordenados. Há elementos repetidos.
11. Comando utilizado para ordenar uma lista?
- a. Collections.sort(lista)
- b. Collections.random(lista)
- c. Collections.shuffle(lista)
- d. Collections.retainAll(lista)
12. O que faz o comando <property name="toplink.ddl-generation" value="create-tables" /> declarado no arquivo persistence.xml?
- a. Cria uma nova tabela no banco de dados sobrescrevendo a antiga.
- b. Cria uma nova tabela no banco de dados quando esta não existir; se existir, simplesmente atualiza.
- c. Não executa nada, é apenas uma declaração informativa.
- d. Gera um script da tabela para atualizá-la no banco de dados.
13. Qual método é utilizado para retornar um registro do banco de dados e transformá-lo em um objeto, com base em sua entidade de destino?
- a. Entidade e = em.find(Entidade.class, chave)
- b. Entidade e = em.findEntity(Entidade.class, chave)
- c. Entidade e = em.find(chave, Entidade.class)
- d. Entidade e = em.localFind(Entidade.class, chave)
14. Qual anotação é utilizada para definir um atributo que não será armazenado no banco de dados?
- a. @Id
- b. @Managed
- c. @Transient
- d. @Removed
15. O que faz o comando <persistence-unit name="persistencia" /> declarado no arquivo persistence.xml?
- a. Definir o tipo da unidade de persistência.
- b. Definir o nome da unidade de persistência a ser utilizado pelo método createEntityManagerFactory(), que contém as configurações do banco de dados.
- c. Definir o nome da unidade de persistência a ser utilizado pelo método createEntityManager(), que contém as configurações do banco de dados.
- d. Definir o nome da unidade de persistência a ser utilizado pela classe de persistência.
16. Qual comando é utilizado para eliminar uma entidade?
- a. em.removeEntity(e)
- b. em.elimina(e)
- c. em.remove(e)
- d. em.eliminaEntity(e)
17. Um Session Bean sem estados não mantém um estado de conversação com o cliente; apenas durante a chamada o estado é mantido e depois não é retido:
- a. Stateless Session Bean
- b. Stateful Session Bean
- c. Entity Session Bean
- d. MessageDriven Session Bean
18. Qual dos seguintes comandos cria uma fábrica de gerenciadores de entidade?
- a. EntityManagerFactory emf = Persistence.createEntityManagerFactory("teste");
- b. EntityManager em = emf.createEntityManager();
- c. EntityTransaction trans = em.getTransaction();
- d. Aluno a = new Aluno();
19. Quais as opções que temos para acessar um banco de dados usando JPA?
- a. SQL nativa
- b. SQL nativa e JPA QL
- c. SQL nativa, JPA QL e método find
- d. SQL nativa, JPA QL, método find e método executeQuery
20. Qual das alternativas abaixo NÃO é uma justificativa para o uso de EJB?
- a. Quando a aplicação deve ser implementada em três camadas, facilitando a sua manutenção e distribuição.
- b. Quando a aplicação deve ser escalável, tanto por possuir um número crescente de usuários, como por poder estar distribuída em múltiplas máquinas.
- c. Quando transações são necessárias para garantir a integridade dos dados.
- d. Quando a aplicação possuir um alto número de clientes. Como a lógica de negócio fica nos componentes do lado servidor, a manutenção é facilitada.
21. São estados do ciclo de vida de uma entidade:
- a. New, Managed, Persisted, Refreshed
- b. New, Managed, Removed, Detached
- c. New, Removed, Recalled, Committed
- d. Merged, Removed, Persisted, New
22. São métodos da interface Entity Manager:
- a. createQuery(), createNamedQuery(), delete(), cancelTransaction()
- b. begin(), create(), refresh(), delete()
- c. commit(), rollback(), merge(), detached()
- d. refresh(), merge(), persist(), remove()
23. Dentro do Contexto de Persistência, quando uma entidade NÃO está sendo controlada pelo EntityManager, ou seja, alterações na entidade não serão refletidas no banco de dados, dizemos que ela está no estado:
- a. DETACHED
- b. MANAGED
- c. NEW
- d. CONTROLLED