2. Objectivos
● identificar caracteristicas da framework
nHibernate
● perceber como funciona a framework
nHibernate
● identificar vantagens da utilização deste tipo de
framework
● saber utilizar as ferramentas básicas da
framework nHibernate
3. O que é
● porting de framework Hibernate para Java
– ambas são Open-Source + (L)GPL
– nHibernate 1.0 comparável com Hibernate 2.1
– versão mais recente de Hibernate => 3.1
4. Para que serve
● Mapear Dados / Objectos
● Fornecer serviços que:
– permitam carregar os objectos
– permitam persistir os objectos
Operações CRUD
C – create
R – retrieve
U – update
D - delete
5. Como funciona
● Reflection
– a partir de uma definição inicial
– inspecciona os nossos objectos
– cria as instruções necessárias para as operações
CRUD
– injecta valores nos nossos objectos
6. Porque queremos uma framework
destas
● tipicamente para cada objecto necessitamos
de:
– definir a tabela onde ele vai ser persistido
– criar uma instrução sql
● para ler um registo
● para ler um conjunto de registos baseado num critério
● para inserir um registo
● para actualizar um registo
● para eliminar um registo
7. Porque queremos uma framework
destas (cont.)
● tipicamente para cada objecto necessitamos
de:
– criar o codigo necessario para ligar-me à base de
dados (.net => connection)
– criar o codigo necessário para executar a instrução
sql (.net => command e eventualmente parameters)
– criar objecto propriamente dito
– criar objecto agrupador (collection)
8. Porque queremos uma framework
destas (cont.)
● é um trabalho repetitivo
● é um trabalho moroso
● sujeito a erros (por exemplo tipos de dados
diferentes entre tabela e objecto)
● ...
9. nHibernate
● Objecto.Save
– grava dados de um objecto numa tabela
● Object.Load
– carrega dados de uma tabela para um objecto ou
para uma colecção
10. Produtividade?
● opção tradicional
– +/- 50 linhas de código para operações CRUD
– +/- 5 linhas de código para operações CRUD
11. Por onde começar
● www.nhibernate.org
● instalar
– vitorsilvadownloadslibsnhibernate-1.0.0.0
● copiar para uma pasta do vosso computador
● configurar vstudio + nhibernate
– copiar nhibernate-mapping-2.0.xsd e nhibernate-
configuration-2.0.xsd da pasta do nhibernate para a
pasta de instalação do vstudio
● C:Program FilesMicrosoft Visual Studio .NET
2003Common7Packagesschemasxml
12. 1º Exemplo
● criar uma base de dados access
● nessa base de dados criar uma tabela
chamada utilizadores
13. 1º Exemplo
● Criar uma nova solução com um
projecto do tipo windows
application
● Alterar Assembly Name e Root
Namespace para
Infos.Teste.NHibernate
● Criar uma classe chamada
Utilizador com as propriedades
correspondentes aos campos da
tabela “utilizadores”
14. 1º Exemplo
● Configurações nHibernate
– adicionar referencia ao assembly Nhibernate.dll
– adicionar referencia ao assembly log4net.dll
15. 1º Exemplo
● Configurações nHibernate
– definição da fonte de dados e mecanismo de log
● adicionar um ficheiro do tipo “Application Configuration
File”
● substituir conteudo automático pelo ficheiro
codigo0403_01.txt
17. 1º Exemplo
● Configurações nHibernate
– configuração mecanismo de log
● acrescentar referencia a ficheiro
● acrescentar no ficheiro AssemblyInfo.vb a linha:
<Assembly: log4net.Config.XmlConfigurator()>
24. 2º Exemplo
● Herança
– Estratégia 1ª classe => 1ª Tabela
– Criar uma classe chamada Fornecedor que herda
de Entidade e acrescenta a propriedade
MoradaAlternativa
– Acrescentar na base de dados uma tabela
chamada fornecedores
25. 2º Exemplo
– alterar ficheiro Entidade.hbm.xml para o ficheiro
codigo0403_05.txt
30. 3º Exemplo
● Relações Um para Muitos
– Criar uma nova classe chamada Artigo
31. 3º Exemplo
● Criar na base de dados uma tabela chamada
artigos
32. 3º Exemplo
● Criar mapeamento entre objecto Artigo e tabela
artigos
– criar ficheiro xml chamado Artigo.hbm.xml
– substituir conteúdo automático pelo conteúdo do
ficheiro codigo0403_06.txt
36. 4º Exemplo
● Load
– agora que já temos bastantes dados nas nossas
tabelas vamos recuperá-los
– Session.Load()
– Acrescentar novo botao no formulário
– nesse botao acrescentar o codigo do ficheiro
codigo0403_07.txt
39. Objectivos
● identificar caracteristicas da framework
nHibernate
● perceber como funciona a framework
nHibernate
● identificar vantagens da utilização deste tipo de
framework
● saber utilizar as ferramentas básicas da
framework nHibernate
40. Desafio
● Juntar o projecto Reflection com o projecto
nHibernate
● a partir da definição de um objecto criar
dinamicamente um formulário que permita a
manutenção desses dados.