introdução ao nhibernate

32
Introdução ao NHibernate Luís Amorim http://netponto.org 3ª Reunião Presencial - 17/10/2009

Upload: luis-amorim

Post on 07-Jul-2015

2.749 views

Category:

Technology


2 download

DESCRIPTION

This is a presentation done for NetPonto which is the most active Portuguese .NET community. It provided an introduction to O/R mapping in general and the NHibernate framework in particular.

TRANSCRIPT

Page 1: Introdução ao NHibernate

Introdução ao NHibernateLuís Amorim

http://netponto.org3ª Reunião Presencial - 17/10/2009

Page 2: Introdução ao NHibernate

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

Agenda

• Introdução

• O que é o NHibernate?

• Funcionamento do NHibernate

• NHibernate na prática

• Conclusão

Page 4: Introdução ao NHibernate

Introdução: DAL

• Persistir dados e disponibilizar operações de CRUD

• Permitir a execução de queriesavançadas

Page 5: Introdução ao NHibernate

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

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

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

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

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

Classes Persistentes

Page 11: Introdução ao NHibernate

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

Mapeamento

Page 13: Introdução ao NHibernate

Arquitectura

Page 14: Introdução ao NHibernate

API (Parte 1)

• ISession

• ITransaction

• ISessionFactory

Page 15: Introdução ao NHibernate

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

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

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

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

Operações de CRUD

Page 20: Introdução ao NHibernate

API (Parte 2)

• ICriteria

• ICriterion

• Restrictions

• IProjection

• Order

Page 21: Introdução ao NHibernate

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

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

Queries

Page 24: Introdução ao NHibernate

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

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

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

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

Alternativas O/RM

• Entity Framework

• EntitySpaces

• Genome

• LINQ to SQL

• LLBLGen Pro

Page 29: Introdução ao NHibernate

Dúvidas?

Page 31: Introdução ao NHibernate

Patrocinador desta reunião

Page 32: Introdução ao NHibernate

Obrigado!

Luís [email protected]

http://www.linkedin.com/in/lgamorim