Prévia do material em texto
Informações da avaliação JOÃO GABRIEL VASCONCELLOS MELÃO 1240106673 21_2025_1_IL10332_21SIF7251A Avaliação 2 - Prova Regular - 28/06/2025 11:00:00 (Finished) Sala 127 - Laboratório 1 / Térreo - Lab Informática / Bloco A / POLO UVA RIO DE JANEIRO - TIJUCA - RJ Total: 7.60 / 10.00 Legenda Discursiva Objetiva Questão 1 | Código 38958 | 0.80 / 0.80 Enunciado O padrão Factory Method é bastante utilizado em projetos de sistemas, pois é possível encapsular o código que cria objetos, concentrando o código de criação em apenas um objeto ou método, evitando duplicação de código e apresentando um local único para fazer manutenção, tornando o código mais flexível e extensível para o futuro.Analise as asserções a seguir sobre o padrão de projeto “Factory Method” usado no desenvolvimento de sistemas computacionais com acesso a banco de dados:I – O padrão de projeto “Factory Method” pode ser usado para definir uma interface específica para criação de conexões do banco de dados.PORQUEII – O padrão Factory Method” consegue controlar melhor o processo repetitivo de criação de conexões, o qual consome muitos recursos do SGBD. Analisando as assertivas, pode-se inferir que: Justificativa Resposta correta:As asserções I e II são proposições verdadeiras e a II é uma justificativa correta da I.I é verdadeira, pois, com o padrão Factory, o código para criação de conexões do banco de dados pode ser encapsulado, definindo assim um local único para implementação de uma interface específica.II é verdadeira, pois, com o uso do padrão Factory Method, é possível concentrar as atividades de abertura e fechamento de conexões com o banco de dados para melhor controle dos recursos importantes do sistema.II justifica a I, pois o padrão “Factory Method” consegue controlar o processo de criação de conexões, o qual consome muitos recursos do SGBD. Esse padrão é normalmente aplicado em projetos de sistemas para implementar interfaces específicas de conexões do banco de dados, evitando duplicação de código e apresentando um local único para fazer manutenção, além de tornar o código mais flexível e extensível para atualizações. >c)As asserções I e II são proposições verdadeiras e a II é uma justificativa correta da I. Alternativa marcada c) As asserções I e II são proposições verdadeiras e a II é uma justificativa correta da I. Impressão da prova https://aluno.provafacilnaweb.com.br/#/finished-tests/46199... 1 of 9 7/11/25, 6:36 PM Questão 2 | Código 39216 | 0.00 / 0.80 Enunciado Para gerenciar as entidades de uma aplicação é necessário usar um objeto gerenciador “EntityManager” obtido por meio de uma classe “EntityManagerFactory”. Analise as seguintes assertivas a seguir sobre os métodos do EntityManager utilizados para manipulação de dados em uma aplicação JAVA.I. É necessário usar o método persist() do gerenciador EntityManager para persistir as informações de um objeto no banco de dados.II. Para obter um objeto que contenha informações do banco de dados, é possível utilizar os métodos find() ou getReference() do EntityManager. Enquanto o método getReference() busca imediatamente os dados, o método find() adia a consulta até que um método get seja executado no objeto desejado.III.Pode-se utilizaro método “remove()” do gerenciador de entidade EntityManager para remover um registro de um objeto.IV. Para sincronizar o banco de dados com as informações que foram modificadas em memória é necessário criar uma transação JPA pelo gerenciador de entidade que controla os objetos a serem atualizados. Para a sincronização de dados de forma definitiva deve-se usar o método commit().V. Para abrir uma transação JPA deve-se usar o método begin() e para sincronizar as informações com o banco de dados de forma apenas parcial pode-se usar o método flush().Indique as assertivas corretas: Justificativa Resposta correta:I, III, IV e V.Na assertiva II, os conceitos dos conceitos dos métodos find() ou getReference() estão trocados. Para obter um objeto que contenha informações do banco de dados, é possível utilizar os métodos find() ou getReference() do EntityManager. Enquanto o método find() busca imediatamente os dados, o método getReference() adia a consulta até que um método get seja executado no objeto desejado. >a)I, III, IV e V. Alternativa marcada e) Todas. Impressão da prova https://aluno.provafacilnaweb.com.br/#/finished-tests/46199... 2 of 9 7/11/25, 6:36 PM Questão 3 | Código 38968 | 0.80 / 0.80 Enunciado É importante implementar o tratamento adequado de exceções ao usar a biblioteca JDBC. No caso de alguma falha no acesso ao banco de dados, deve-se prever o fechamento das conexões com o banco de dados para liberar recursos importantes do sistema.Avalie as alternativas mostradas a seguir sobre o tratamento adequado de exceções ao usar a biblioteca JDBC:I- Pode ser implementado por um bloco “try … catch ... finally”. O bloco “finally” indica um trecho de código que sempre será executado, se uma exceção ocorrer ou não e que pode ser usado para liberar recursos importantes do sistema.II- Basta utilizar o comando “throws” para avisar que estamos cientes de que aquela exceção pode ocorrer, mas não é necessário tratá-la neste momento para liberar recursos do sistema.III- Pode ser realizado por um bloco “try-with-resources” ( Java 7) que permite declarar e inicializar objetos que implementam o método “AutoCloseable”. Dessa forma, ao término do bloco “try”, o próprio compilador insere instruções para chamar o fechamento de recursos importantes do sistema.Assinale a opção correta: Justificativa Resposta correta:Apenas as alternativas I e III são verdadeiras.I- Verdadeira: No bloco “try … catch ... finally”, a parte “finally” indica um trecho de código que sempre será executado, se uma exceção ocorrer ou não e que pode ser usado para liberar recursos importantes do sistema e prever o fechamento das conexões com o banco de dados.III- Verdadeira. O bloco “try-with-resources” (disponível a partir da versão Java 7) que permite declarar e inicializar objetos que implementam o método “AutoCloseable” (fechamento automático). Dessa forma, ao término do bloco “try”, o próprio compilador insere instruções para chamar o fechamento de recursos importantes do sistema e prever o fechamento das conexões com o banco de dados.Distrator:II- Falsa. Sempre é necessário implementar o tratamento de exceções. >d)Apenas as alternativas I e III são verdadeiras. Alternativa marcada d) Apenas as alternativas I e III são verdadeiras. Impressão da prova https://aluno.provafacilnaweb.com.br/#/finished-tests/46199... 3 of 9 7/11/25, 6:36 PM Questão 4 | Código 39211 | 0.80 / 0.80 Enunciado Na técnica de Mapeamento Objeto-Relacional (MOR), a utilização de anotações específicas nos próprios arquivos Java é prática e evita a utilização de extensos arquivos em outra linguagem e sintaxe XML.Analise as seguintes assertivas sobre o uso da anotação @Entity:I- A anotação @Entity deve estar depois do nome de uma classe que terá objetos persistidos no banco de dados.II - Qualquer classe com a anotação @Entity será mapeada para uma tabela do banco de dados e seus atributos serão mapeados para colunas nesta tabela.III- O nome da tabela será o mesmo nome da classe por padrão, mas poderá ser alterado pela anotação @Table.Marque a alternativa correta: Justificativa Resposta correta:Apenas as assertivas II e III são verdadeiras.II – Verdadeira. Qualquer classe com a anotação @Entity será mapeada para uma tabela do banco de dados. Uma classe com a anotação @Entity terá seus atributos mapeados para colunas na tabela que corresponde à classe mapeada.III- Verdadeira. O nome da tabela será o mesmo nome da classe por padrão, mas poderá ser alterado pela anotação @Table.Distrator:I – Falsa. A anotação @Entity deve estar sempre antes do nome de uma classe que terá objetos persistidos no banco de dados. >e)Apenas as assertivas II e III são verdadeiras. Alternativa marcada e) Apenas as assertivas II e III são verdadeiras. Questão 5 | Código 39221 | 0.00 / 0.80 Enunciado Com o objetivo de saber como os objetos são administrados pelos Entity Managers, é necessário conhecer o ciclo de vida das entidades de dados.Relacione os estados do ciclo de vida das entidades de dados descritos a seguir com seus verdadeiros significados.Marque a alternativa com a correlação correta: Justificativa Resposta correta:I – b, II – d, III – a, IV – c.Novo (New): o objeto não está associado a um Gerenciador de Entidade. No estado “Novo”, o objeto não possui uma chave de identidade e seu conteúdo não é transmitido para o banco de dados. Se uma instância de uma entidade foi recém-criada com um comando “New” ela encontra-se no estado “Novo”, conforme a especificação JPA.Administrado (Managed): nesse estado o objeto está associado a um Gerenciador de Entidade e possui uma chave de identidade. Os dados de um objeto no estado “Administrado” são atualizados no banco de dados a cada sincronização.Desvinculado (Detached): no estado “Desvinculado” o objeto não está associado a um Gerenciador de Entidade, mas possui uma chave de identidade. O conteúdo de um objeto nesse estado não é sincronizado com o banco de dados.Removido (Removed): nesse estado o objeto possui uma chave de identidade e está associado a um Gerenciador de Entidade. Quando houver uma sincronização, o conteúdo desse objeto será removido do banco de dados. >c)I – b, II – d, III – a, IV – c. Alternativa marcada b) I – b, II – d, III – c, IV – a. Impressão da prova https://aluno.provafacilnaweb.com.br/#/finished-tests/46199... 4 of 9 7/11/25, 6:36 PM Questão 6 | Código 38959 | 0.80 / 0.80 Enunciado Durante o desenvolvimento de um aplicativo Java com conexão a bancos de dados é necessário realizar operações de dados SQL nas tabelas utilizando conexões JDBC. Neste caso, existe o problema de se misturar a sintaxe das linguagens Java e SQL torna o código confuso e de difícil entendimento, especialmente para operações de inserção e atualização de dados.Dessa forma, determine qual classe da biblioteca JDBC poderia ser usada para facilitar a utilização do código SQL no código Java para realizar operações de dados: Justificativa Resposta correta:PreparedStatement.A interface PreparedStatement possui o método prepareStatement , passando como argumento o comando SQL com os valores vindos de variáveis preenchidos com uma interrogação, evitando as concatenações de strings.A interface PreparedStatement evita a necessidade de concatenação de strings longas para os implementar os comandos SQL, principalmente com tabelas de dados grandes com várias colunas e o tratamento de caracteres especiais nas strings, existe o risco de alteração do código SQL por usuários mal intencionados (SQL injection).Distratores:DriverManager. Errada. A interface DriverManager trata da implementação de conexão aos drivers do banco de dados.Connection. Errada. Na classe Connection são definidos métodos padrões para trabalhar com banco de dados, tais como: executar consultas, inserir dados, confirmar uma transação, fechar a conexão, entre outros.ResultSET. Errada. A interface ResultSET possui métodos para tratar o resultado das consultas ao banco de dados. >d)PreparedStatement. Alternativa marcada d) PreparedStatement. Impressão da prova https://aluno.provafacilnaweb.com.br/#/finished-tests/46199... 5 of 9 7/11/25, 6:36 PM Questão 7 | Código 39222 | 0.00 / 0.80 Enunciado Imagine que, para o desenvolvimento de um aplicativo com acesso a banco de dados utilizando provedores JPA, será necessário utilizar a funcionalidade de “caching” para otimizar o acesso às informações armazenadas. Avalie as seguintes assertivas sobre as diferentes formas de implementação da funcionalidade de “caching” em provedores JPA :I - A funcionalidade de caching não é indicada para acesso às informações que são modificadas e acessadas com muita frequência.II - É mais eficiente manter apenas uma cópia das informações mais usadas em dispositivos de disco rígido do banco de dados do que armazenar em memória de acesso rápido.III – Existesomenteuma forma de implementação da funcionalidade “caching” em provedores JPA.Marque a alternativa correta: Justificativa Resposta correta:Apenas a alternativa I é verdadeira.I – Verdadeira. O caching possui objetivo de possibilitar o acesso mais rápido às informações que são mais utilizadas e que por sua vez não são alteradas com muita frequência.Distratores:II – Falsa. É mais eficiente manter uma cópia destas informações mais usadas em memória de acesso rápido (“caching”), evitando o acesso constante e mais lento aos dispositivos de armazenamento do banco de dados.III – Falsa. Existem as seguintes formas de implementação de cache em provedores JPA: Cache de Primeiro Nível (“Persistence Context”) e Cache de Segundo Nível (“Shared Cache”). >b)Apenas a alternativa I é verdadeira. Alternativa marcada e) Apenas a alternativa II é verdadeira. Impressão da prova https://aluno.provafacilnaweb.com.br/#/finished-tests/46199... 6 of 9 7/11/25, 6:36 PM Questão 8 | Código 38951 | 0.80 / 0.80 Enunciado Sabemos que existem algumas vantagens em escolher modelos de arquitetura adequados para utilização no desenvolvimento de sistemas computacionais com alta complexidade.Neste contexto, leia as afirmações a seguir.I – Ajudam o gerenciamento dos riscos técnicos da solução computacional.II – Permitem melhor tratamento dos requisitos de qualidade de software.III – Impedem a análise de impacto de mudanças tecnológicas e de negócios.IV – Orientam as atividades de projeto e implementação.Está correto apenas o que se afirma em: Justificativa Resposta correta:I, II e IV estão corretas.I – Correta. A utilização de modelos de arquitetura adequados ajuda na gestão e controle dos riscos técnicos envolvidos durante o desenvolvimento de sistemas computacionais complexos.II – Correta. Durante o ciclo de desenvolvimento de sistemas computacionais, o uso de modelos de arquitetura adequados permite melhor tratamento dos requisitos funcionais e não funcionais necessários para a solução computacional.IV – Correta. A utilização de modelos de arquitetura adequados ajudam o ciclo de desenvolvimento de sistemas com alta complexidade, desde as etapas iniciais de análise, projeto e durante a fase de implementação do código.Distrator:A asserção III está errada, pois a escolha modelos de arquitetura adequados ajuda a análise de impacto de mudanças tecnológicas e de negócios. >b)I, II e IV estão corretas. Alternativa marcada b) I, II e IV estão corretas. Impressão da prova https://aluno.provafacilnaweb.com.br/#/finished-tests/46199... 7 of 9 7/11/25, 6:36 PM Questão 9 | Código 39225 | 0.80 / 0.80 Enunciado Após a implementação de uma aplicação num Web Container, o processamento de requisições e respostas em cada página JSF é controlada pela classe Faces Servlet por meio de várias etapas de execução.Relacione as seguintes etapas de processamento de requisições JSF com seus respectivos significados:Marque a alternativa correta: Justificativa Resposta correta:I – d, II – c, III – b, IV – a.Restore View. Nesta etapa, uma árvore de componentes (“component tree”) inicial representando a tela da primeira requisição feita por um usuário é gerada. A árvore de componentes da tela será reconstruída nas requisições seguintes desse mesmo usuário (“postback”).Apply-Request Values. Nesta etapa, a árvore de componentes construída na etapa Restore View” anterior é verificada e decodificada, onde cada componente retira as informações associadas da requisição atual para atualização. Além disso, os eventos de usuário são identificados nesta etapa e são armazenados para tratamento futuro na etapa Invoke Application.Process Validations. Nesta etapa, os componentes com dados transmitidos pelos usuários por meio de formulários de entrada sofrem as conversões e validações necessárias. Se não houve erro durante os processos de validação e conversão, o fluxo continua na etapa “Update Model Values”. Caso aconteça algum umerro, serão acrescentadas mensagens de falha no contexto da requisição e o fluxo sofrerá direcionamento para a etapa “Render Response”.Invoke Application. Nesta fase as tarefas relacionadas ao evento de usuário que iniciou a requisição podem ser executadas porque as informações dos componentes já estão convertidas, validadas e armazenadas nos “Managed beans” do modelo. Na fase “Invoke Application” o método que realiza a lógica do negócio apresenta a próxima tela ao usuário. >c)I – d, II – c, III – b, IV – a. Alternativa marcada c) I – d, II – c, III – b, IV – a. Impressão da prova https://aluno.provafacilnaweb.com.br/#/finished-tests/46199... 8 of 9 7/11/25, 6:36 PM Questão 10 | Código 39212 | 2.80 / 2.80 Enunciado Considere um aplicativo com acesso a banco de dados que foi desenvolvido pela equipe de programação Java. Foi utilizada a especificação Java Database Connectivity (JDBC) para fazer a aplicação Java interagir com os Sistemas Gerenciadores de Banco de Dados (SGBD) e as consultas foram definidas com a linguagem SQL diretamente nas classes Java.Avalie se a solução empregada é a mais adequada para o desenvolvimento desse projeto. Justifique sua resposta e, se for o caso, apresente uma alternativa. Resposta Para uma aplicação mais simples, como um CRUD, visto na avaliação 2 cadeira de Programação Orientada a Objetos II e no material educacional (e-book) de Programação Orientada a Objetos 3 (sistema de aluno), não seria tão problemático. Entretanto, afim de escalar de uma forma mais limpa, o ideal seria separar os contextos utilizando o padrão repositório + factory e inversão de controle junto a utilização de uma interface. Por exemplo: github.com/JGMelon22/Controle-de-Carros. Entretanto, poderíamos também implementar uma maior abstração utilizando o projeto Hibernate. Comentários Ok! Justificativa Expectativa de resposta:Ao implementar as consultas diretamente com a linguagem SQL, o primeiro problema é que a sintaxe da linguagem SQL é diferente em cada SGDB. Dessa forma, a complexidade do trabalho dos desenvolvedores aumenta caso seja necessário usar vários SGBDs diferentes.Outro problema é que os SGDBs são organizados seguindo o modelo relacional e as aplicações Java utilizam o modelo orientado a objetos, o que dificulta a comunicação e a transição de dados entre modelos e paradigmas diferentes. A manutenção e o desenvolvimento do sistema também possuem maior dificuldade.Para resolver esses problemas, deve-se utilizar ferramentas ORM (Object Relational Mapper) como o Hibernate e o JPA (Java Persistence API), que conseguem automatizar a transição de dados entre as aplicações e os SGDBs. As ferramentas ORM oferecem mecanismos de consultas independentes da linguagem SQL, o que diminui o acoplamento entre as aplicações e os SGDBs. Pode ser definido um mapeamento entre os conceitos objeto-relacional. Por exemplo, classes podem ser mapeadas para tabelas, objetos para registros, atributos para campos e referência entre objetos para chaves estrangeiras Impressão da prova https://aluno.provafacilnaweb.com.br/#/finished-tests/46199... 9 of 9 7/11/25, 6:36 PM