Recursos especiais neste artigo:
Contém nota Quickupdate.
Neste artigo iremos apresentar um breve histórico das aplicações de acesso a dados para então adentrarmos no mundo dos ORMs, apresentando os principais recursos e diferenças entre NHibernate e Entity Framework, que são dois dos frameworks ORMs mais utilizados atualmente no mercado.
Em que situação o tema é útil
Este tema é útil para todos aqueles que desejam ter mais produtividade e segurança em suas aplicações de acesso a dados, fazendo com que o leitor tenha embasamento para avaliar qual das duas tecnologias melhor se adéqua às necessidades de suas aplicações.
Nos dias atuais, a grande maioria das aplicações que desenvolvemos faz operações com bancos de dados, sendo na maioria das vezes utilizado um banco de dados relacional. Por outro lado, nos últimos anos temos visto uma crescente busca pelo aumento da produtividade nas empresas de software, principalmente com a popularização cada vez maior do paradigma orientado a objetos, com todo seu apelo ao reuso e desacoplamento.
Isto nos leva a um problema de diferença entre paradigmas. Temos nossas aplicações com uma modelagem mais próxima ao modelo de negócio de nossos clientes, porém temos bases de dados relacionais que armazenam nossos dados com uma estrutura diferente. Além disso, cada SGDB possui um dialeto diferente, fazendo com que corramos o risco de deixar nossa aplicação “presa” a determinados SGDBs.
Esta diferença de modelos foi uma das principais motivações, aliada à produtividade e abstração dos SGDBs, para a criação dos frameworks de mapeamento-objeto-relacional(ORM), porém isso só foi possível devido à toda evolução na arquitetura das plataformas e à criação de padrões e APIs como o ODBC.
API ODBC
O ODBC é uma API escrita em C para o acesso a dados em SGDBs que foi criada para funcionar com qualquer sistema operacional e qualquer banco de dados que possua um driver que implemente as interfaces ODBC. Para seu pleno funcionamento foi criada uma padronização específica da linguagem SQL que funcionasse independentemente de banco de dados.
O grande entrave do ODBC reside na dificuldade de configuração e na necessidade de alto conhecimento técnico dos profissionais que programam aplicações de acesso a dados. Com o intuito de melhorar as interfaces ODBC, em meados de 1994 a Microsoft criou as bases para o padrão OLE DB.
Como sucessor do ODBC o OLE DB provê uma série de interfaces com a utilização de objetos COM funcionando de forma distribuída. Diferentemente do ODBC, com o OLE DB é possível acessar uma grande variedade de fontes de dados de maneira uniforme permitindo o acesso a bases de dados não relacionais, bancos de objetos e planilhas.
A intenção inicial deste padrão era a portabilidade das aplicações, porém isso só era possível em ambiente Microsoft. Com o intuito de facilitar ainda mais a abstração da forma como as aplicações acessam seus dados, a Microsoft criou um conjunto de interfaces de acesso a dados, englobando objetos de conexão, gerenciadores de sessão, adaptadores de dados, objetos de comando e objetos transacionais.
Não muito diferente dos provedores ODBC e OLE DB, a utilização do .NET Data Provider depende da implementação das suas interfaces para o acesso a SGDBs.
Os .NET Data Providers do SQL Server já acompanham por padrão o .NET Framework, facilitando assim o desenvolvimento de aplicações que acessem este SGDB. Para os demais SGDB’s é necessário que as interfaces do .NET Data Provider sejam implementadas em uma biblioteca distribuída. Seguem alguns exemplos de SGDBs e seus respectivos provedores de dados:
PostgreSQL - Npgsql Data Provider
Oracle Oracle - Data Provider
FireBird - Firebird .NET Provider
MySQL - MySQL Connector .NET
NHibernate – Um pouco de história
Não obstante ao projeto Hibernate, Tom Barrett com o apoio de diversos desenvolvedores .NET, iniciou em meados de 2004 um projeto sinônimo ao Hibernate, batizado NHibernate. Em 2005 o projeto passou a ser liderado por Sergey Koshcheyev, ante a JBoss Inc. Um ano depois o projeto deixou de ser suportado pela JBoss passando a ser fomentado exclusivamente pela comunidade NHibernate Forge, sob a liderança de Fabio Maulo.
Hoje o NHibernate já contém uma forte bagagem de ferramentas provendo segurança e confiabilidade no desenvolvimento de aplicações de acesso a dados na plataforma .NET.
Entity Framework – Um pouco de história
Em paralelo ao NHibernate a Microsoft lançou, em conjunto com o Visual Studio 2008 SP1,o .NET Framework 3.5 e o então chamado Entity Framework (EF) 1.0. Dentre os principais recursos apresentados, o Entity Framework promovia o desenvolvimento de aplicações com base na tecnologia Linq, o que foi um grande diferencial entre as ferramentas ORM.
Mesmo em meio às críticas dos desenvolvedores, o projeto EF 1.0 evoluiu com a chegada do .NET Framework 4, passando a ser chamado de EF 4, apesar de ser a segunda versão.
O grande salto do EF em relação a outras ferramentas ORM foi a total integração com o Visual Studio, permitindo ao desenvolvedor a criação de modelos de entidades relacionais de forma visual.
Mesmo com esse grande avanço, o framework permanecia bastante engessado e atrelado às versões anteriores do Visual Studio, dificultando a migração de aplicações para as novas versões. Isso sem mencionar a falta de suporte a classes CLR planas tradicionais, os chamados POCOs.
Visando a solução deste problema, a Microsoft lançou mão do padrão de desenvolvimento chamado Code First que, além de introduzir o suporte a POCOs, trouxe novos recursos como o suporte a carregamento de objetos sob demanda (lazy loading), suporte a aplicações N-Tier, dentre outros.
NHibernate, Entity Framework, Incompatibilidades e Provedores de dados
Apesar dos provedores OLE DB e ODBC do .NET implementarem as interfaces do ADO.NET, o Entity Framework 4 é incompatível com ambas as tecnologias, deste modo, bancos que possuem apenas drivers OLE DB e ODBC não poderão ser acessados via Entity.
Em contrapartida, o NHibernate utiliza as interfaces do ADO.NET, permitindo o suporte a uma gama maior de fontes de dados, incluindo ODBC e OLE DB. Isto é possível por conta da interface IDriver. Esta interface é utilizada internamente pelo NHibernate para a obtenção de objetos de conexão e comandos de bancos de dados, devendo ser implementada pelo NHibernate Driver (Nota do DevMan 1) do banco de dados a ser utilizado.
NHibernate Driver é um driver específico para determinados bancos de dados. Os drivers do NHibernate trabalham em sintonia com as interfaces IDbConnection, IDbCommand, IDbDataReader, IDataParameter existentes no ADO.NET, possibilitando a criação de drivers personalizados para qualquer banco de dados que utilize da tecnologia.
O NHibernate contém suporte nativo a inúmeros SGDBs, porém caso um determinado banco não seja previamente suportado basta que seja implementada esta interface para o banco em questão e o NHibernate irá se conectar ao mesmo.
A Tabela 1 lista os principais SGDBs e se os mesmos são suportados pelo NHibernate e Entity Framework.
...
Confira outros conteúdos:
Teste unitário com NUnit
Como migrar projetos do ASP.NET MVC...
Crie relatórios com o Stimulsoft...
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.