Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução ao NHibernate ORM Framework - Luis Amorim

Introdução ao NHibernate ORM Framework - Luis Amorim

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

Comunidade NetPonto

October 17, 2009
Tweet

More Decks by Comunidade NetPonto

Other Decks in Programming

Transcript

  1. 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
  2. Agenda • Introdução • O que é o NHibernate? •

    Funcionamento do NHibernate • NHibernate na prática • Conclusão
  3. Introdução: DAL • Persistir dados e disponibilizar operações de CRUD

    • Permitir a execução de queries avançadas
  4. 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)
  5. 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
  6. Classes persistentes • Plain Old CLR Objects (POCOs) • Propriedades

    read/write para todos os campos persistentes • Definição de um constructor por defeito (sem argumentos)
  7. 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()
  8. 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
  9. 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
  10. API / ISession • Implementação implícita do pattern Unit of

    Work • Alterações às entidades persistem nos limites de uma transacção • Factory para instâncias da interface ITransaction
  11. 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
  12. API / ISessionFactory • Factory para instâncias da interface ISession

    • Comportamento é controlado por propriedades de configuração • Tipicamente, uma aplicação tem uma única ISessionFactory
  13. API / ICriteria • Representa uma query sobre uma classe

    persistente • Permite obter entidades compondo objectos do tipo ICriterion • A interface ISession é uma factory para instâncias de ICriteria
  14. 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
  15. NHibernate: Vantagens • Facilita a implementação do pattern Domain Model

    • Independência da base de dados • Redução de código e abstracção da semântica SQL • Query language orientada a objectos
  16. 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
  17. 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
  18. 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