http://netponto.org<br />3ª Reunião Presencial - 17/10/2009<br />Introdução ao NHibernateLuís Amorim<br />
Luís Amorim<br />7 anos de experiência profissional em TI<br />Licenciado em Engenharia de Sistemas e Informática<br />Exp...
Agenda<br />Introdução<br />O que é o NHibernate?<br />Funcionamento do NHibernate<br />NHibernate na prática<br />Conclus...
Introdução: DAL<br />Persistir dados e disponibilizar operações de CRUD<br />Permitir a execução de queries avançadas<br />
Introdução: DAL<br />Disponibilizar uma semântica transaccional<br />Garantir integridade da informação em cenários de con...
Introdução: O/RM<br />API para operações de CRUD<br />Querymodele querylanguagepara a definição de queries<br />API para m...
NHibernate: O que é?<br />Framework O/RM<br />Permite mapear classes .NET para tabelas de uma base de dados<br />Permite e...
Classes persistentes<br />PlainOldCLR Objects (POCOs)<br />Propriedades read/write para todos os campos persistentes<br />...
Classes persistentes<br />Definição de uma propriedade que guarde a chave primária (opcional)<br />Preferência por classes...
Classes Persistentes<br />demonstração<br />
Mapeamento<br />Mapeamentos object/relational são definidos num documento XML<br />A linguagem para mapeamento é centrada ...
Mapeamento<br />demonstração<br />
Arquitectura<br />
API (Parte 1)<br />ISession<br />ITransaction<br />ISessionFactory<br />
API / ISession<br />Principal interface .NET/NHibernate<br />Representa uma conversação entre a aplicação e a base de dado...
API / ISession<br />Implementação implícita do patternUnitofWork<br />Alterações às entidades persistem nos limites de uma...
API / ITransaction<br />Permite que as aplicações definam operações atómicas (transacções)<br />Uma transacção está associ...
API / ISessionFactory<br />Factory para instâncias da interface ISession<br />Comportamento é controlado por propriedades ...
Operações de CRUD<br />demonstração<br />
API (Parte 2)<br />ICriteria<br />ICriterion<br />Restrictions<br />IProjection<br />Order<br />
API / ICriteria<br />Representa uma query sobre uma classe persistente<br />Permite obter entidades compondo objectos do t...
API / Restrictions<br />Disponibiliza métodos factory para obter instâncias ICriterion<br />ICriterion representa uma cond...
Queries<br />demonstração<br />
NHibernate: Vantagens<br /><ul><li>Facilita a implementação do patternDomain Model
Independência da base de dados
Redução de código e abstracção da semântica SQL
Query language orientada a objectos</li></li></ul><li>NHibernate: Vantagens<br /><ul><li>Navegação transparente entre obje...
Lazy loading (configurável)
Cache das entidades (objectos) em memória
Gestão de transacções e isolamento</li></li></ul><li>NHibernate: Desvantagens<br />Menor performance se comparado com ADO....
CodeSmith<br />Gerador de código baseado em templates (configuráveis)<br />CodeSmith IDE, CodeSmith API e integração com o...
Alternativas O/RM<br />Entity Framework<br />EntitySpaces<br />Genome<br />LINQ to SQL<br />LLBLGen Pro<br />
Upcoming SlideShare
Loading in …5
×

Introdução ao NHibernate ORM Framework - Luis Amorim

2,381 views
2,278 views

Published on

Apresentação sobre o framework NHibernate com diversas demonstrações práticas de utilização, na terceira reunião presencial da comunidade NetPonto

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,381
On SlideShare
0
From Embeds
0
Number of Embeds
55
Actions
Shares
0
Downloads
32
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introdução ao NHibernate ORM Framework - Luis Amorim

  1. 1. http://netponto.org<br />3ª Reunião Presencial - 17/10/2009<br />Introdução ao NHibernateLuís Amorim<br />
  2. 2. Luís Amorim<br />7 anos de experiência profissional em TI<br />Licenciado em Engenharia de Sistemas e Informática<br />Experiência profissional no desenvolvimento de software<br />Utilização de tecnologias Microsoft .NET e Java<br />
  3. 3. Agenda<br />Introdução<br />O que é o NHibernate?<br />Funcionamento do NHibernate<br />NHibernate na prática<br />Conclusão<br />
  4. 4. Introdução: DAL<br />Persistir dados e disponibilizar operações de CRUD<br />Permitir a execução de queries avançadas<br />
  5. 5. Introdução: DAL<br />Disponibilizar uma semântica transaccional<br />Garantir integridade da informação em cenários de concorrência<br />
  6. 6. Introdução: O/RM<br />API para operações de CRUD<br />Querymodele querylanguagepara a definição de queries<br />API para mapear metadados (classes e tabelas, propriedades e colunas)<br />
  7. 7. NHibernate: O que é?<br />Framework O/RM<br />Permite mapear classes .NET para tabelas de uma base de dados<br />Permite expressar queriesutilizando HQL, SQL, objectos Criteria/Example<br />
  8. 8. Classes persistentes<br />PlainOldCLR Objects (POCOs)<br />Propriedades read/write para todos os campos persistentes<br />Definição de um constructorpor defeito (sem argumentos)<br />
  9. 9. Classes persistentes<br />Definição de uma propriedade que guarde a chave primária (opcional)<br />Preferência por classes não sealed e métodos virtuais (opcional)<br />Implementação dos métodos Equals() e GetHashCode()<br />
  10. 10. Classes Persistentes<br />demonstração<br />
  11. 11. Mapeamento<br />Mapeamentos object/relational são definidos num documento XML<br />A linguagem para mapeamento é centrada em objectos<br />Declaração de classes persistentes e não de tabelas<br />
  12. 12. Mapeamento<br />demonstração<br />
  13. 13. Arquitectura<br />
  14. 14. API (Parte 1)<br />ISession<br />ITransaction<br />ISessionFactory<br />
  15. 15. API / ISession<br />Principal interface .NET/NHibernate<br />Representa uma conversação entre a aplicação e a base de dados<br />Disponibiliza métodos para executar operações de CRUD<br />
  16. 16. API / ISession<br />Implementação implícita do patternUnitofWork<br />Alterações às entidades persistem nos limites de uma transacção<br />Factory para instâncias da interface ITransaction<br />
  17. 17. API / ITransaction<br />Permite que as aplicações definam operações atómicas (transacções)<br />Uma transacção está associada a uma sessão<br />Uma sessão poderá iniciar várias transacções<br />
  18. 18. API / ISessionFactory<br />Factory para instâncias da interface ISession<br />Comportamento é controlado por propriedades de configuração<br />Tipicamente, uma aplicação tem uma única ISessionFactory<br />
  19. 19. Operações de CRUD<br />demonstração<br />
  20. 20. API (Parte 2)<br />ICriteria<br />ICriterion<br />Restrictions<br />IProjection<br />Order<br />
  21. 21. API / ICriteria<br />Representa uma query sobre uma classe persistente<br />Permite obter entidades compondo objectos do tipo ICriterion<br />A interface ISession é uma factory para instâncias de ICriteria<br />
  22. 22. API / Restrictions<br />Disponibiliza métodos factory para obter instâncias ICriterion<br />ICriterion representa uma condição numa cláusula WHERE (SQL)<br />São classes utilizadas para aplicar restrições na construção de queries<br />
  23. 23. Queries<br />demonstração<br />
  24. 24. NHibernate: Vantagens<br /><ul><li>Facilita a implementação do patternDomain Model
  25. 25. Independência da base de dados
  26. 26. Redução de código e abstracção da semântica SQL
  27. 27. Query language orientada a objectos</li></li></ul><li>NHibernate: Vantagens<br /><ul><li>Navegação transparente entre objectos relacionados
  28. 28. Lazy loading (configurável)
  29. 29. Cache das entidades (objectos) em memória
  30. 30. Gestão de transacções e isolamento</li></li></ul><li>NHibernate: Desvantagens<br />Menor performance se comparado com ADO.NET<br />Mapeamento de chaves primárias compostas não é simples<br />Produtividade depende da utilização de geradores de código<br />
  31. 31. CodeSmith<br />Gerador de código baseado em templates (configuráveis)<br />CodeSmith IDE, CodeSmith API e integração com o Visual Studio<br />Inclui templates para o NHibernate, entre outros<br />
  32. 32. Alternativas O/RM<br />Entity Framework<br />EntitySpaces<br />Genome<br />LINQ to SQL<br />LLBLGen Pro<br />
  33. 33. Dúvidas?<br />
  34. 34. Referências<br />http://nhforge.org<br />http://www.hibernate.org<br />http://www.ayende.com<br />
  35. 35. Patrocinador desta reunião<br />
  36. 36. Obrigado!<br />Luís Amorim<br />luis.g.amorim@gmail.com<br />http://www.linkedin.com/in/lgamorim<br />

×