http://netponto.org3ª Reunião Presencial - 17/10/2009Introdução ao NHibernateLuís Amorim
Luís Amorim7 anos de experiência profissional em TILicenciado em Engenharia de Sistemas e InformáticaExperiência profissional no desenvolvimento de softwareUtilização de tecnologias Microsoft .NET e Java
AgendaIntroduçãoO que é o NHibernate?Funcionamento do NHibernateNHibernate na práticaConclusão
Introdução: DALPersistir dados e disponibilizar operações de CRUDPermitir a execução de queries avançadas
Introdução: DALDisponibilizar uma semântica transaccionalGarantir integridade da informação em cenários de concorrência
Introdução: O/RMAPI para operações de CRUDQuerymodele querylanguagepara a definição de queriesAPI para mapear metadados (classes e tabelas, propriedades e colunas)
NHibernate: O que é?Framework O/RMPermite mapear classes .NET para tabelas de uma base de dadosPermite expressar queriesutilizando HQL, SQL, objectos Criteria/Example
Classes persistentesPlainOldCLR Objects (POCOs)Propriedades read/write para todos os campos persistentesDefinição de um constructorpor defeito (sem argumentos)
Classes persistentesDefiniçã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()
Classes Persistentesdemonstração
MapeamentoMapeamentos object/relational são definidos num documento XMLA linguagem para mapeamento é centrada em objectosDeclaração de classes persistentes e não de tabelas
Mapeamentodemonstração
Arquitectura
API (Parte 1)ISessionITransactionISessionFactory
API / ISessionPrincipal interface .NET/NHibernateRepresenta uma conversação entre a aplicação e a base de dadosDisponibiliza métodos para executar operações de CRUD
API / ISessionImplementação implícita do patternUnitofWorkAlterações às entidades persistem nos limites de uma transacçãoFactory para instâncias da interface ITransaction
API / ITransactionPermite que as aplicações definam operações atómicas (transacções)Uma transacção está associada a uma sessãoUma sessão poderá iniciar várias transacções
API / ISessionFactoryFactory para instâncias da interface ISessionComportamento é controlado por propriedades de configuraçãoTipicamente, uma aplicação tem uma única ISessionFactory
Operações de CRUDdemonstração
API (Parte 2)ICriteriaICriterionRestrictionsIProjectionOrder
API / ICriteriaRepresenta uma query sobre uma classe persistentePermite obter entidades compondo objectos do tipo ICriterionA interface ISession é uma factory para instâncias de ICriteria
API / RestrictionsDisponibiliza métodos factory para obter instâncias ICriterionICriterion representa uma condição numa cláusula WHERE (SQL)São classes utilizadas para aplicar restrições na construção de queries
Queriesdemonstração
NHibernate: VantagensFacilita 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 objectosNHibernate: VantagensNavegação transparente entre objectos relacionados
Lazy loading (configurável)
Cache das entidades (objectos) em memória
Gestão de transacções e isolamentoNHibernate: DesvantagensMenor performance se comparado com ADO.NETMapeamento de chaves primárias compostas não é simplesProdutividade depende da utilização de geradores de código
CodeSmithGerador de código baseado em templates (configuráveis)CodeSmith IDE, CodeSmith API e integração com o Visual StudioInclui templates para o NHibernate, entre outros
Alternativas O/RMEntity FrameworkEntitySpacesGenomeLINQ to SQLLLBLGen Pro

Introdução ao NHibernate ORM Framework - Luis Amorim