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