Lista de Exercícios Preparatórios para a Prova da Primeira Unidade
Sobre os sistemas corporativos de forma geral, responda as seguintes questões:
- O que diferencia um sistema corporativo de um sistema convencional?
- Uma plataforma que permite o desenvolvimento de sistemas corporativos, normalmente provê uma série de serviços para os sistemas a serem desenvolvidos em tais plataformas. Exemplifique três desses serviços, e ao mesmo tempo justifique cada um dos serviços citados.
- Qual o papel de um servidor de aplicação para um sistema corporativo?
- Na plataforma JEE (Java Enterprise Editition) os componentes corporativos, ou EJBs - Enterprise JavaBeans - executam em um "contêiner EJB". Um contêiner EJB gerencia os recursos utilizados pelos EJBs, tais como: (i) memória, (ii) threads, (iii) conexões com o banco de dados, (iv) poder de processamento, etc. Para cada um desses recursos, explique com suas palavras qual o trabalho realizado pelo contêiner.
- Quais são os principais serviços oferecidos por um contêiner EJB? Explique resumidamente o objetivo de cada um deles.
- Quais são os tipos de EJBs e para que servem cada um deles?
- Por que concorrência é importante para um sistema corporativo?
- Qual o papel de transações em um sistema corporativo?
- Por que os componentes de uma aplicação corporativa são tratados de forma feral como "objetos distribuídos"?
- Qual a diferença de uma mensagem síncrona para uma mensagem assíncrona? Por que as mensagens assíncronas são especialmente importantes quando se trata de sistemas corporativos?
- Qual a proposta do EJB Timer Service?
- Qual o objetivo de se ter um serviço de atribuição de nomes na plataforma para o desenvolvimento de sistemas corporativos?
- Em que aspectos a segurança é importante no desenvolvimento de sistemas corporativos?
Sobre a tecnologia de Java Server Faces - JSF, responda as seguintes questões:
- O que é JSF?
- Qual a relação entre JSP e JSF?
- Descreva com suas palavras os elementos de JSF que podem ser utilizados no desenvolvimento de aplicações Web.
- Como são expressos em uma página JSF os componentes de interface com o usuário do JSF?
- Como é feita a ligação entre os componentes de interface com o usuário e as classes Java que apoiam o desenvolvimento de aplicações com esta tecnologia?
- Exemplifique como pode ser programada a manipulação de eventos nos componentes de interface com o usuário do JSF.
- O que são e qual o papel dos validadores JSF?
- O que são e qual o papel dos conversores JSF?
- Qual a vantagem de se montar a navegação entre páginas JSF através do faces-config.xml?
- O que são os managed beans?
- Qual a diferença entre os escopos de "request" (requisição) e "session" (sessão) para um managed bean?
Sobre a tecnologia de Enterprise Java Beans - EJB, responda as seguintes questões:
- O que é um enterprise bean?
- Quais são os dois tipos de EJB e qual o objetivo de cada um deles?
- O que diferencia os três tipos específicos de beans de sessão - (i) sem informação de estado (stateless), (ii) com informação de estado (stateful) e (iii) singleton?
- Quais são as formas de acessar um bean de sessão?
- Quais os passos necessários para implementar um bean de sessão (remoto) sem informações de estado?
- Qual o papel do JNDI com relação aos EJB?
- Explique com suas palavras o conceito de injeção dinâmica.
Sobre a tecnologia de mapeamento objeto/relacional com a Java Persistence API - JPA, responda as seguintes questões:
- Qual a proposta do mapeamento objeto/relacional?
- Quais os requisitos mínimos para tornar uma classe Java comum em uma classe de entidade segundo a JPA?
- Qual a função do arquivo "orm.xml" com relação à tecnologia JPA?
- Qual a necessidade de se mapear um dos atributos da entidade com a anotação @Id?
- Existe duas abordagens de pensar o mapeamento entre classes de entidade e tabelas de banco de dados. Quais são essas formas de mapeamento? Qual o papel das anotações @Table e @Column para uma dessas abordagens?
- O que pode ser especificado com relação a um mapeamento objeto/relacional através de da anotação @Basic? O que pode ser especificado com relação a um mapeamento objeto/relacional através de da anotação @Column?
- Explique com suas palavras o esquema de validação de atributos persistentes providenciado pela JPA.
- O que acontece a uma propriedade de uma classe de entidade JPA anotada com @Transient?
- Por que é necessário anotar um campo representando uma data (java.util.Date ou java.util.Calendar) com a anotação @Temporal da JPA?
- Quando e por que é utilizada a anotação @Enumerated?
- Defina com suas palavras o que significa uma classe de entidade JPA estar "acoplada" (ou gerenciada) ou "desacoplada" (ou não gerenciara)?
- Quais são os dois tipos de contexto de persistência, no que diz respeito ao escopo dos mesmos? Qual é a relação de cada um desses escopos com o "acoplamento" e "desacoplamento" de classes de entidade JPA?
- Um conjunto de classes de entidade está vinculado a uma unidade de persistência (ou persistence unir). Uma unidade de persistência é definida em um arquivo "persistence.xml". O que eu posso definir em uma unidade de persistência?
- O que acontece quando eu utilizo a tag <exclude-unlisted-classes> na definição de uma unidade de persistência em um "persistence.xml"?
- Qual o papel do gerente de entidades (javax.persistence.EntityManager) para uma aplicação utilizando JPA?
- Quando e como uma classe de entidade é persistida com a JPA?
- Quando e como classes de entidade são localizadas/recuperadas com a JPA?
- Quando e como classes de entidade são atualizadas com a JPA?
- Qual a necessidade do processo de "merge()" disponibilizado pelo gerente de entidades?
- Dado o relacionamento (bidirecional) um-para-um entre as classes "Aluno" e "Endereco". Como esse relacionamento deve ser mapeado com JPA?
- Dado o relacionamento (bidirecional) um-para-muitos entre as classes "Professor" e "Diario". Como esse relacionamento deve ser mapeado com JPA?
- Dado o relacionamento (bidirecional) muitos-para-muitos entre as classes "Aluno" e "Diario". Como esse relacionamento deve ser mapeado com JPA?
- No mapeamento de relacionamentos entre classes de entidade no JPA, qual a funcionalidade das anotações @JoinColumn e @JoinTable?
- Nas anotações de relacionamento entre classes de entidade pode ser definido o atributo "cascade". Quais as opções para o "cascateamento" das operações para as classes de entidade relacionadas? Qual a motivação para a utilização desse atributo?
- Dado o modelo de domínio abaixo, escreva as seguintes consultas JPQL solicitadas abaixo.
- Listar todas as contas cadastradas no sistema.
- Listar nome e CPF de todos os clientes cadastrados no sistema.
- Listar todos os clientes de uma dada agência, com base no seu número (sem repetir).
- Listar todos os bancos em que um determinado cliente tem conta, com base no seu CPF.
- Listar todas as operações cadastradas que foram realizadas em contas de um dado cliente, dado o seu CPF.
- Listar todos os clientes que possuam contas com saldo entre R$ 10.000,00 e R$ 100.000,00.
- Listar todas as agências que não possuem contas associadas a mesma.
- Listar todos os clientes de bancos com agência com o termo "MIDWAY" em alguma parte do seu nome.
- Listar as operações realizadas no dia de hoje, em uma dada conta, informado o seu número.
- Recuperar a quantidade de agências de um dado banco dado o seu código.
- Recuperar o maior saldo entre as contas cadastradas no sistema.
- Recuperar a média de saldo das contas cadastradas no sistema.
- Recuperar a soma dos saldos de todas as contas de um dado cliente, com base no seu CPF.
- Recuperar o nome dos bancos e quantidade de agências de cada um deles.
- Recuperar a lista de clientes com alguma conta com saldo acima da média de saldo.