UNIVERSIDADE BANDEIRANTE DE SÃO PAULO (UNIBAN) INSTITUTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (ICET) SÃO PAULO / SP – NOVEMBRO 2009 CURSO DE BACHARELADO EM SISTEMAS DE INFORMAÇÃO (3º ANO) CURSO DE TECNÓLOGO EM PROCESSAMENTO DE DADOS (3º ANO) DISCIPLINA: TÓPICOS AVANÇADOS DE PROGRAMAÇÃO PROF. MSC. VLADIMIR CAMELO E-MAIL: [email protected] SIMULADO PREPARATÓRIO PARA PROVA AC II 1. Quais as diferenças entre um ArrayList e um TreeSet? R.ArrayList = È recomendado quando o tamanho da lista é previsível e as operações de inserção e remoção são feitas, em sua maioria, no fim da lista, ou quando a lista é mais lida do que modificada. Treeset = Usar quando precisar de um conjunto (de elementos únicos) que deve estar sempre ordenado, mesmo sofrendo modificações. Não é possível indexar os elementos por índices numéricos como em um List. 2. Explique o que é o Mapeamento Objeto Relacional. R. Possibilita a realização de persistência entre um objeto em uma aplicação Java para entidades relacionais (tabelas) em um banco de dados relacional. 3. Quando devem ser utilizados EJB’s em uma aplicação? R.Quando precisar desenvolver aplicações de regras de negócios baseadas em componentes distribuídos, que envolvam grandes quantidades de dados e que são acessados por muitos usuários. 4. Explique o que é um SessionBean e um MessageDrivenBean. R. São 2 dos 3 tipos de Enterprise Java Beans; Session Bean representa a um único cliente no servidor de JEE, ou seja, o processo de negócio )regra de negócio). MessageDriveBean permite que as aplicações JEE processem mensagens de modo assíncrono, funciona semelhante a um bloadcast de menagem. 5. Explique o que é uma unidade de persistência no JPA. R. Conjunto de classes mapeadas, por meio de arquivo de persistência XML, para um banco de dados relacional. 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. C=Create R=Retrieve U=Update D=Delete 7. Explique o que é um POJO. R. POJO são classes simples escritas em Java. È a denominação que se dá a uma classe que em geral não deriva de nenhuma interface ou classe, contém atributos privados, um construtor padrão sem argumentos, e métodos públicos get/set para acessar seus atributos. 8. O que são Metadados em um Entity? R. Associados a cada Entity já alguma quantidade de metadados. Esses metadados permitem que a camada de persistência reconheça, interprete e gerencie o entity de forma apropriada, desde o mapeamento em que ele é carregado até sua invocação em tempo de execução 9. Explique o contexto de persistência (“Persist Context”). R. è um conjunto de objetos/entidades gerenciadas por um EntityManager. Existem dois tipos: Transaction-Scoped e ExtendedPersistence. È o espaço de memória onde os objetos persistentes se encontram. 10. Explique as diferenças entre um StateFul Session Bean e um Stateless Session Bean. R. StateFul Stateless -Cria MAIS de uma instância de objeto -mantém o estado de conversasão com o cliente -Podemos ter atributos com métodos getter e setters -Cada cliente terá uma instãncia do EJB exclusiva. Desde sua criação até sua remoção. 11. cria APENAS uma instância de objeto Não mantém o estado de conversasão com o cliente Não se deve utilizar atributos de negócio, somente atributos técnicos em rede. È um EJB econômico Cancelada – 1ª semestre 12. Explique a diferença entre consultas Nomeadas (Estatísticas) e consultas Dinâmicas. R. Uma query estática pode ser definida através de uma anotação oi dentro de um arquivo XML pela criação de uma query nomeada (namedQuery). Uma query dinâmica é criada durante a execução e por isso será um pouco mais custosa porque o JPA Provider não poderá fazer nenhum tipo de otimização a priori. 13. Crie uma classe de persistência chamada PersisteCliente para a tabela apresentada abaixo. Omitir os métodos getters e setters. R import javax.persistence.*; @Entity @Table(name=”cliente”) Public class PersisteCliente { @Id @GeneratedValue private integer idCliente; private String nome; private String endereco; privatae String rg; public PersisteCliente() { } } 14. Dado o programa abaixo implemente as seguintes rotinas neste programa: a. Chamar o comando para mostrar a quantidade de registros no conjunto b. Criar um looping por meio do Iterator para apresentar todos os elementos R. //DENTRO DO MAIN // A. SYSTEM.OUT.PRINTLN(CONJUNTO.SIZE()); / / B; ITERATOR IT = CONJUNTO.ITERATOR(); WHILE(IT.HASNEXT()) { STRING NOME = (STRING)IT.NEXT(); SYSTEM.OUT.PRINTLN(NOME); } 15. Com base na classe de persistência PersisteAluno escreva o código da classe CriaAluno para armazenar um aluno e um RA no banco de dados: R. Public void criar() { Entity transaction tx = em.getTransaction(); tx.begin try { persisteAluno aluno = new persisteAluno; aluno.setNome(JOptionPane.showInputDialog(null, “nome,” 1)); aluno.setRa(Integer.parseInt(JOptionPane.showInputDialog(null, “RA”, 1)); tx.commit; em.persist(aluno); } Catch (Exception ex) { Tx.rollback(); } 16. Escreva o código das entidades que podem mapear as seguintes tabelas no banco de dados. Omita getters e setters. DVD number ID (PK) varchar NOME (not null) number CLI_ID (FK(CLIENTE.ID)) @Entity public class DVD { @Id private int Id. ; private String nome; . . . @ManyToOne @JoinColumn(name=”ID”) CLIENTE 0..* 0..1 number ID (PK) varchar NOME (not null) varchar ENDERECO (not null) @Entity public class Cliente { @Id private int ID; private String nome, endereco; @OneToMany(mappedBy=”DVD”) private List<DVD> dvdList=new ArrayList<dvd>(); private Cliente clienete; 17. Com base na figura abaixo explique o que é um gerenciador de entidades, no contexto da Java Persistence API. R. EntityManager são objetos que podem ser criados através das Unidades de Persistência; responsável por quase todas as operações de persistência de objetos 18. Com base na figura abaixo explique como funciona o ciclo de vida / Estado de um objeto, no contexto da Java Persistence API. Explique os métodos que controlam este ciclo de vida. R. O clico de vida de uma entidade pode ser constituído por quatro estados: new, managed, removed e detached, como mostrado na Figura.. Um objeto que se encontra no estado new pode ser definido como aquele que foi definido a partir do operador new e que não possui um valor para o seu identificador persistente, por exemplo, aquele com um ciclo de vida limitado ao tempo de vida do processo que o instanciou. Objetos neste estado também são conhecidos como objetos transientes. Em outras palavras, o objeto não está associado ao EntityManager. Já um objeto no estado managed é aquele que tem um valor definido para o seu identificador persistente e está associado a um contexto de persistência. Assim, o EntityManager irá fazer com que a base de dados seja atualizada com novos valores dos atributos persistentes no fim da transação. Por outro lado, existem objetos também associados a um contexto de persistência, porém que estão “marcados” para serem excluídos da base de dados no final da transação, e assim permanecendo no estado removed. Por fim, também existem aqueles objetos que se encontram em um estado denominado detached, que possuem registros correspondentes na base de dados, mas não estão associados a um contexto de persistência. 19. Que tipo de relacionamento esta sendo Explique. R. relacionamento many-to-many, várias instâncias de uma diversas instâncias de outra entidades. Muitos atores podem ter muitos papéis e muitos papéis tem muitos atores. realizado entre as entidades? entidade podem estar associadas com outras 20. Explique com base na figura abaixo os tipos de relacionamentos existentes entre as entidades. Comunidade 1 ----- 1.* Papel Unidirecional Ono-To-Many Uma comunidade tem uma ou muitos papéis; Comunicade * ------ 1 Ator Unidirecional Many-To-One uma comunidade tem um ator Papel *-----* Ator Bidirecional Many-To-Many muitos papéis tem muitos atores Ator 1-----1 cadastro Unidirecional - Ony-To-Ony um ator tem um cadastro. 21. CANCELADA 1º SEMESTRE 22. CANCELADA 1º SEMESTRE 23. Qual annotation deve ser utilizada numa interface definir que seus métodos serão acessíveis localmente? SessionBeans, para a. @Local b. @Stateless c. @Remote d. @Stateful 24. 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 25. Qual annotation deve-se utilizar para declarar uma classe como classe persistente? a. @AutoNumber b. @Entity c. @Identity d. @GeneratedValue 26. 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 27. Qual comando é utilizado para desfazer as alterações no banco de dados? a. em.getTransacion( ).save( ) b. em.getTransacion( ).commit( ) c. em.getTransacion( ).close( ) d. em.getTransacion( ).rollback( ) 28. Em qual camada fica o servidor EJB? a. Camada Cliente b. Camada de Negócio c. Camada EIS d. Camada Web 29. 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. 30. 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. 31. Comando utilizado para ordernar uma lista? a. Collections.sort(lista) b. Collections.random(lista) c. Collections.shuffle(lista) d. Collections.retainAll(lista) 32. 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 sobreescrevendo 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 33. 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) 34. 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 35. O que faz o comando “<persiste-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 36. Qual comando é utilizado para eliminar uma entidade? a. em.removeEntity(e) b. em.elimina(e) c. em.remove(e) d. em.eliminaEntity(e) 37. 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 38. Qual dos seguintes comandos cria uma fábrica de gerenciadores de entidade? a. EntityManagerFactory emf tence.createEntityManagerFactory(“teste”); = b. EntityManager em = emf.createEntityManager(); c. EntityTransaction trans = em.getTransaction(); d. Aluno a = new Aluno(); 39. 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 Persis- 40. 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 a aplicação pode estar distribuída em múltiplas máquinas. c. Quando transações são integridade dos dados. necessárias para garantir a 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. 41. São estados do ciclo de vida de uma entidade: a. New, Managed, Persisted, Refreshed b. New, Managed, Removed, Detached c. New, Removed, Recalled, Commited d. Merged, Removed, Persisted, New 42. São métodos da interface Entity Manager: a. createQuery(), createNamedQuery(), delete(), cancelTransaction() b. begin(), create(), refresh(), delete() c. commit(), rollback(), merged(), detached() d. refresh(), merge(), persist(), remove() 43. O padrão DAO é utilizado para? a. Separar a lógica de Negócios do resto da aplicação. b. Permitir que a aplicação execute em um servidor de aplicações. c. Transportar objetos pela rede de forma otimizada. d. Encapsular o acesso ao banco de dados. 44. 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. CONTROLED 45. Observe o código abaixo e identifique qual o tipo de construção a que ele se refere: a. Trata-se de uma Consulta Nomeada (estática), na qual as definições são feitas no nível da entidade b. Trata-se de uma Consulta Dinâmica na qual será retornado um resultset que será recuperado pelo método getResultList() c. Trata-se de uma Alteração em Lote a ser gerenciada pelo Gerenciador e Entidades e executada através do método executeUpdate() d. Nehuma das respostas acima está totalmente correta 46. Associe a coluna da esquerda com a direita: (1) @Entity (2) @Table (3) @Id (4) @GeneratedValue (5) @Transient (6) @Column Define um campo auto-incremento Define que um atributo não será salvo no banco de dados Define o atributo que constitui a chave primária Define o nome da tabela onde os objetos serão persistidos Marca uma classe como entidade persistente que deve possuir um construtor sem parâmetros Define o nome da coluna onde o atributo será salvo a. 1, 5, 3, 2, 4, 6 b. 4, 5, 3, 2, 1, 6 c. 5, 4, 1, 3, 2, 6 d. 4, 2, 3, 2, 5, 6 47. Método da interface javax.persistence.Query consulta nomeada (estática): utilizado para criar uma a. createPersistedQuery() b. createNamedQuery() c. createQuery() d. createListQuery() 48. Observe o trecho de código abaixo: na classe Pessoa.java foi evento de retorno de chamada para gravação de uma auditoria executada logo após a inserção de um registro no Banco de Dados a anotação correta a ser aplicada neste caso para o trecho código? adicionado um que deve ser Qual deve ser sublinhado no a. b. c. d. 49. PrePersist PostPersist PreUpdate PostUpdate Qual a vantagem de utilizarmos aplicações multicamadas? Desenhe um diagrama que represente graficamente as camadas envolvidas nesta forma de desenvolvimento. Horizontais 2. Exemplo de um fornecedor de provedores de persistência 4. Sigla que representa Enterprise Java Beans 6. Conhecidos como beans de sessão 8. Anotação utilizada para marcar uma classe como entidade persistente que deve possuir um construtor sem parâmetros (não escreva o @) 9. As alterações em Lote são executadas através do método ___________ que retorna o número de linhas afetadas 10. A arquitetura JPA usa amplamente __________ e está baseada no conceito POJO 12. Sigla para Plain Old Java Object. 13. Método da interface Collections para recuperar qualquer objeto em uma posição da lista 14. A exceção IndexOutOf_____Exception é disparada quando tenta-se acessar um elemento da que está fora dos limites definidos 15.Qual o valor retornado pelo método size() no código abaixo? ArrayList lista = new ArrayList(3); int i = lista.size(); Verticais 1. Método da interface Iterator que indica que ainda há elementos a serem percorridos na Coleção ou ResultSet 3. É um servidor de aplicação de código aberto baseado na plataforma J2EE 5. Método da classe EntityManager utilizado para criar consultas dinâmicas 7. Método da classe EntityManager utilizado para criação de consultas nomeadas 11. A classe ________ permite percorrer todos os elementos de uma lista e possui os métodos hasNext() e next() R: HORIZONTAIS: 2) hibernate 4) ejb 6) sessionbeans 8) entity 9) executeupdate 10) annotations 12) pojo 13) get 14) bounds 15) zero VERTICAIS 1) hasnext 3) jboss 5) createquery 7) createnamedquery 11) iterator