introdução ao nhibernate

Post on 07-Jul-2015

2.747 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

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

Introdução ao NHibernateLuís Amorim

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

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

Agenda

• Introdução

• O que é o NHibernate?

• Funcionamento do NHibernate

• NHibernate na prática

• Conclusão

Introdução: DAL

• Persistir dados e disponibilizar operações de CRUD

• Permitir a execução de queriesavançadas

Introdução: DAL

• Disponibilizar uma semântica transaccional

• Garantir integridade da informação em cenários de concorrência

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)

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

Classes persistentes

• Plain Old CLR Objects (POCOs)

• Propriedades read/write para todos os campos persistentes

• Definição de um constructor por defeito (sem argumentos)

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()

Classes Persistentes

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

Mapeamento

Arquitectura

API (Parte 1)

• ISession

• ITransaction

• ISessionFactory

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

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

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

API / ISessionFactory

• Factory para instâncias da interface ISession

• Comportamento é controlado por propriedades de configuração

• Tipicamente, uma aplicação tem uma única ISessionFactory

Operações de CRUD

API (Parte 2)

• ICriteria

• ICriterion

• Restrictions

• IProjection

• Order

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

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

Queries

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

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

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

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

Alternativas O/RM

• Entity Framework

• EntitySpaces

• Genome

• LINQ to SQL

• LLBLGen Pro

Dúvidas?

Patrocinador desta reunião

Obrigado!

Luís Amorimluis.g.amorim@gmail.com

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

top related