SlideShare uma empresa Scribd logo
1 de 32
http://netponto.org 3ª Reunião Presencial - 17/10/2009 Introdução ao NHibernateLuís Amorim
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 queries avanç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 Querymodele querylanguagepara 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 queriesutilizando HQL, SQL, objectos Criteria/Example
Classes persistentes PlainOldCLR Objects (POCOs) Propriedades read/write para todos os campos persistentes Definição de um constructorpor 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 demonstração
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 demonstração
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 patternUnitofWork 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 demonstração
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 factory para 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 demonstração
NHibernate: Vantagens ,[object Object]
Independência da base de dados
Redução de código e abstracção da semântica SQL
Query language orientada a objectos,[object Object]
Lazy loading (configurável)
Cache das entidades (objectos) em memória
Gestão de transacções e isolamento,[object Object]
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

Mais conteúdo relacionado

Semelhante a Introdução ao NHibernate

Sistemas Distribuídos - Comunicação Distribuída – CORBA
Sistemas Distribuídos - Comunicação Distribuída – CORBASistemas Distribuídos - Comunicação Distribuída – CORBA
Sistemas Distribuídos - Comunicação Distribuída – CORBAAdriano Teixeira de Souza
 
Padrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAAPadrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAAAricelio Souza
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com PythonLuiz Aldabalde
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com PythonPythOnRio
 
Deep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkDeep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkLuciano Condé
 
API's Automidia: Provendo Meios Estruturados de Integração
API's Automidia: Provendo Meios Estruturados de IntegraçãoAPI's Automidia: Provendo Meios Estruturados de Integração
API's Automidia: Provendo Meios Estruturados de IntegraçãoRequestia Software
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicRicardo Guerra Freitas
 
Sistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - SocketSistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - SocketAdriano Teixeira de Souza
 
ASP.NET Core 2.1 #dotnetconf
ASP.NET Core 2.1 #dotnetconfASP.NET Core 2.1 #dotnetconf
ASP.NET Core 2.1 #dotnetconfRodrigo Kono
 
TDC Floripa 2015 Desenvolvendo Sistemas de Gestão a partir de Modelos Execut...
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Execut...TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Execut...
TDC Floripa 2015 Desenvolvendo Sistemas de Gestão a partir de Modelos Execut...Rafael Chaves
 
Arquitetura de Software - Performance, Layers e Domain Layer
Arquitetura de Software - Performance, Layers e Domain LayerArquitetura de Software - Performance, Layers e Domain Layer
Arquitetura de Software - Performance, Layers e Domain LayerAndré Faria Gomes
 
Curso De Hibernate 3
Curso De Hibernate 3Curso De Hibernate 3
Curso De Hibernate 3Joel Lobo
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Daniel Destro Do Carmo
 
Sistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web ServicesSistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web ServicesAdriano Teixeira de Souza
 

Semelhante a Introdução ao NHibernate (20)

Sistemas Distribuídos - Comunicação Distribuída – CORBA
Sistemas Distribuídos - Comunicação Distribuída – CORBASistemas Distribuídos - Comunicação Distribuída – CORBA
Sistemas Distribuídos - Comunicação Distribuída – CORBA
 
Aula1
Aula1Aula1
Aula1
 
Padrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAAPadrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAA
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com Python
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com Python
 
Deep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkDeep Dive sobre Entity Framework
Deep Dive sobre Entity Framework
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
dotNet framework foundation
dotNet framework foundationdotNet framework foundation
dotNet framework foundation
 
API's Automidia: Provendo Meios Estruturados de Integração
API's Automidia: Provendo Meios Estruturados de IntegraçãoAPI's Automidia: Provendo Meios Estruturados de Integração
API's Automidia: Provendo Meios Estruturados de Integração
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual Basic
 
Sistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - SocketSistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - Socket
 
ASP.NET Core 2.1 #dotnetconf
ASP.NET Core 2.1 #dotnetconfASP.NET Core 2.1 #dotnetconf
ASP.NET Core 2.1 #dotnetconf
 
TDC Floripa 2015 Desenvolvendo Sistemas de Gestão a partir de Modelos Execut...
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Execut...TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Execut...
TDC Floripa 2015 Desenvolvendo Sistemas de Gestão a partir de Modelos Execut...
 
Arquitetura de Software - Performance, Layers e Domain Layer
Arquitetura de Software - Performance, Layers e Domain LayerArquitetura de Software - Performance, Layers e Domain Layer
Arquitetura de Software - Performance, Layers e Domain Layer
 
Aop Aspect J 1.5.4
Aop Aspect J 1.5.4Aop Aspect J 1.5.4
Aop Aspect J 1.5.4
 
Conhecendo o Ruby on Rails
Conhecendo o Ruby on RailsConhecendo o Ruby on Rails
Conhecendo o Ruby on Rails
 
Spring Data Jpa
Spring Data JpaSpring Data Jpa
Spring Data Jpa
 
Curso De Hibernate 3
Curso De Hibernate 3Curso De Hibernate 3
Curso De Hibernate 3
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
 
Sistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web ServicesSistemas Distribuídos - Comunicação Distribuída – Web Services
Sistemas Distribuídos - Comunicação Distribuída – Web Services
 

Introdução ao NHibernate