A equipe de sistemas do TJAP precisa analisar o papel das c...
Para tanto, com a intenção de ajudar nesse processo de análise, as camadas de persistência:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Vamos analisar a questão e entender por que a alternativa B é a correta.
Alternativa B: Esta alternativa afirma que as camadas de persistência proporcionam interfaces que permitem a leitura, gravação e manipulação dos dados armazenados, citando JDBC e ADO.NET como exemplos. Isso está correto. A camada de persistência é crucial para a abstração do acesso ao banco de dados, permitindo que as aplicações interajam com os dados de forma consistente e eficiente. JDBC (Java Database Connectivity) e ADO.NET (ActiveX Data Objects .NET) são bibliotecas amplamente utilizadas para esta finalidade, fornecendo mecanismos para conectar, enviar comandos SQL e manipular resultados de bancos de dados relacionais.
Agora, vamos entender por que as outras alternativas estão incorretas:
Alternativa A: Afirma que as camadas de persistência são exclusivas para bancos de dados NoSQL, utilizando bibliotecas como HBase e Cassandra. Isso é incorreto. As camadas de persistência não são exclusivas para bancos de dados NoSQL; elas são utilizadas para gerenciar a persistência de dados tanto em bancos relacionais quanto NoSQL. Portanto, a afirmação é limitante e inexata.
Alternativa C: Sugere que as camadas de persistência são responsáveis pela interface gráfica dos sistemas de bancos de dados, mencionando bibliotecas como Hibernate e Entity Framework. Isso é incorreto. Hibernate e Entity Framework são frameworks de ORM (Object-Relational Mapping) que facilitam a interação com bancos de dados em um nível de abstração mais alto, mas não têm relação direta com a interface gráfica.
Alternativa D: Afirma que as camadas de persistência gerenciam a persistência de dados no armazenamento, citando SQLite e MongoDB como exemplos. Isso é parcialmente correto, mas a menção a SQLite e MongoDB é inadequada, pois elas são tecnologias específicas de bancos de dados, não bibliotecas de persistência.
Alternativa E: Afirma que as camadas de persistência focam exclusivamente na otimização de consultas SQL, mencionando LINQ e Django ORM. Isso está incorreto. As camadas de persistência não se limitam à otimização de consultas SQL; elas abrangem uma variedade de funções, incluindo a abstração do acesso ao banco de dados e a manipulação de dados. Além disso, LINQ (Language Integrated Query) e Django ORM (Object-Relational Mapping do Django) são ferramentas que ajudam na manipulação e consulta de dados, mas não se limitam à otimização de consultas SQL.
Em resumo, a alternativa B é a correta porque descreve com precisão o papel das camadas de persistência, que é fornecer interfaces para a manipulação de dados armazenados, utilizando bibliotecas como JDBC e ADO.NET. As outras alternativas contêm imprecisões ou limitações que tornam suas afirmações incorretas.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Resposta letra B
No desenvolvimento de sistemas, a arquitetura geralmente é dividida em camadas, cada uma com um papel específico.
Como as Camadas se Relacionam:
1 O usuário interage com a camada de apresentação.
2 A camada de aplicação processa a solicitação.
3 A camada de negócio aplica as regras necessárias.
4 A camada de persistência acessa os dados no banco.
5 A camada de banco de dados retorna a informação.
[A] são exclusivas para bancos de dados NoSQL, utilizando bibliotecas como HBase e Cassandra;
Errada: A camada de persistência não é exclusiva para bancos de dados NoSQL. Ela é um componente fundamental em qualquer sistema que precise armazenar e recuperar dados, independentemente do tipo de banco de dados utilizado (relacional, NoSQL ou mesmo outras formas de armazenamento).
Além disso, HBase e Cassandra são, na verdade, sistemas gerenciadores de bancos de dados (SGBDs) NoSQL, e não bibliotecas.
[B] proporcionam interfaces que permitem a leitura, gravação e manipulação dos dados armazenados, como JDBC e ADO.NET;
Correta: As camadas de persistência realmente fornecem as interfaces necessárias para realizar as operações fundamentais de leitura (retrieval), gravação (creation, update, delete) e manipulação dos dados armazenados no banco de dados.
JDBC (Java Database Connectivity) e ADO.NET (ActiveX Data Objects .NET) são exemplos clássicos dessas interfaces. JDBC é uma API para acesso a dados em Java, enquanto ADO.NET é um conjunto de bibliotecas para acesso a dados na plataforma .NET. Ambas abstraem a complexidade da comunicação com diferentes tipos de bancos de dados, oferecendo uma maneira consistente de interagir com os dados.
[C] são responsáveis pela interface gráfica dos sistemas de bancos de dados, usando bibliotecas como Hibernate e Entity Framework;
Errada: O erro é de fato evidente. A camada de persistência lida com a lógica de acesso aos dados, e não com a interface gráfica do usuário. A interface gráfica é responsabilidade de outras camadas da aplicação (como a camada de apresentação ou UI).
Quanto ao Hibernate e ao Entity Framework, ambos são frameworks de Object-Relational Mapping (ORM). Um framework ORM atua como uma ponte entre o modelo de objetos da sua aplicação e o modelo relacional do banco de dados, facilitando a persistência e a recuperação de dados. Eles automatizam muitas das tarefas repetitivas de acesso ao banco de dados, permitindo que os desenvolvedores trabalhem com objetos em vez de escrever código SQL diretamente. O Hibernate é amplamente utilizado no ecossistema Java, enquanto o Entity Framework é o framework ORM da Microsoft para aplicações .NET. Ambos podem ser considerados bibliotecas no sentido de serem um conjunto de classes e funcionalidades que você incorpora ao seu projeto, mas o termo "framework" descreve melhor seu papel mais abrangente na arquitetura da aplicação.
[D] gerenciam a persistência de dados no armazenamento e as bibliotecas SQLite e MongoDB são exemplos dessa abordagem;
Errada: SQLite e MongoDB não são bibliotecas, mas sim sistemas gerenciadores de bancos de dados (SGBDs) completos. O SQLite é um SGBD relacional leve, frequentemente embutido em aplicações. Já o MongoDB é um SGBD NoSQL orientado a documentos.
Bibliotecas de persistência, por outro lado, são ferramentas que auxiliam a aplicação a interagir com esses SGBDs (ou outros tipos de armazenamento de dados) de forma mais abstrata e conveniente. Exemplos de bibliotecas de persistência incluem o Hibernate (para bancos de dados relacionais, incluindo aqueles acessados via JDBC) e drivers específicos para interagir com o MongoDB em diferentes linguagens de programação.
[E] focam exclusivamente a otimização de consultas SQL, e bibliotecas como LINQ e Django ORM são amplamente utilizadas nesse contexto.
Errada: a camada de persistência tem um escopo mais amplo do que apenas a otimização de consultas SQL. Embora a performance das consultas seja uma consideração importante na camada de persistência, seu papel fundamental é garantir a correta interação da aplicação com o armazenamento de dados, incluindo a tradução entre o modelo de objetos da aplicação e o modelo de dados do banco, a realização das operações CRUD (Create, Read, Update, Delete) e o gerenciamento das transações.
Quanto às tecnologias mencionadas:
- LINQ (Language Integrated Query) é um componente do .NET que permite realizar consultas sobre diferentes fontes de dados (incluindo bancos de dados, coleções em memória, XML, etc.) diretamente na linguagem C# (ou VB.NET). Quando usado com bancos de dados, ele se integra com o Entity Framework (o ORM da Microsoft) para traduzir as consultas LINQ em SQL. Portanto, o LINQ em si não é uma biblioteca de otimização de SQL, mas uma linguagem de consulta integrada que, quando usada com um ORM, pode influenciar a forma como as consultas SQL são geradas e, indiretamente, sua otimização.
- Django ORM é o Object-Relational Mapper (ORM) do framework web Django (escrito em Python). Ele permite que os desenvolvedores interajam com bancos de dados relacionais usando código Python, sem precisar escrever SQL diretamente. O Django ORM abstrai as operações do banco de dados e também se preocupa com a geração de consultas SQL eficientes, embora seu foco principal seja facilitar o acesso e a manipulação dos dados.
Em resumo, embora tanto o LINQ (via Entity Framework) quanto o Django ORM contribuam para a forma como as consultas são escritas e executadas, o foco da camada de persistência é mais abrangente do que apenas a otimização de SQL.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo