Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Quais as principais diferenças entre Entity Framework vs NHibernate?

Gostaria de uma forma resumida (caso isso seja possível de se fazer), qual as principais diferenças entre escolher usar Entity Framework ou NHibernate dentro de um determinado projeto.

Os pontos principais que gostaria de saber são :

  • Para quais projetos essas duas tecnologias trabalham? ex;(web/software/mobile)
  • Dentro deste ambiente, existe alguma limitação que seja necessário recorrer entre uma ou outra?
  • Qual é o tipo de solução que essas duas tecnologias buscam entregar no resultado do projeto? Pode citar quais são elas? Pode dar exemplo de caso?
  • Retornando ao caso da limitação, existe àquela que se limita ao uso específico de Banco de Dados? SQL apenas ou possível variações entre NoSQL?

Se tiver algum detalhe a mais que possa contribuir, é só comentar.

2 respostas
solução!

Oi, Anthony!

Ambos são frameworks ORM (Object-Relational Mapping) e fazem basicamente a mesma coisa, porém, a forma como aplicam o conceito do ORM são diferentes.

Retirado de um texto da InfoQ há algum tempo atrás:

Dentre os recursos citados como vantagens do NHibernate, merecem destaque o extra lazy, paginação e buscas e escritas em batch, além do second level cache, recursos considerados por muitos como fundamentais para uma aplicação em produção escalar utilizando uma ferramenta de persistência como essas.

Como pontos de vista a favor do Entity Framework, muitos citam o suporte oficial da Microsoft e a extensa e cuidadosa documentação do framework.

Agora, respondendo suas perguntas:

Para quais projetos essas duas tecnologias trabalham? ex;(web/software/mobile) ?

R: Eles são amplamente utilizados em Web, pouco se vê em software e não há uma aplicação (ainda) para mobile (no caso, apps mobile).

Dentro deste ambiente, existe alguma limitação que seja necessário recorrer entre uma ou outra?

R: Não que eu saiba, exceto se você precisar de alguma necessidade muito específica que possa ter somente em um e não em outro, mas aí é algo específico demais para poder dar exemplos.

Qual é o tipo de solução que essas duas tecnologias buscam entregar no resultado do projeto? Pode citar quais são elas? Pode dar exemplo de caso?

R: No curso mesmo você deve ver isso. Sem esses frameworks, escrever um código de acesso a banco de dados pode ser muito trabalhoso, verboso e difícil de manter. Tente fazer um ambiente transacional sem eles para ver a dor de cabeça que é. Eles ajudam (e muito) na produtividade.

Retornando ao caso da limitação, existe àquela que se limita ao uso específico de Banco de Dados? SQL apenas ou possível variações entre NoSQL?

R: A última coisa que eu li de atualizações foi mais ou menos no meio desse ano e, até então, não havia integração do Entity Framework ou do NHibernate a bancos NoSQL. No caso do Entity Framework parece que está no backlog deles como tarefa a ser feita, mas não foi implementada e nem há uma data prevista, por enquanto.

Realmente, no curso pude notar sim essas diferenças entre as duas tecnologias, e estes recursos do NHibernate são bem interessantes. Dependendo do tipo de aplicação web à ser implementada "pode ser bem vantajoso" e até ao meu entender, "menos custoso" no manuseio dos recursos do servidor pela forma como são geradas as requisições. e o tempo de espera entre eles.

Vou fazer mais pesquisas sobre essas diferenças, pois de fato a maioria dos exemplos estão relacionados ao EF e pouco se nota presença do NHibernate, talvez realmente seja o fato do EF ter o suporte da Microsoft e a quantidade de exemplos, livros, e tutoriais de se utilizar o EF.

Obrigado Arthur