desenvolvimento em .net - nhibernate
TRANSCRIPT
Desenvolvimento em .Net
nHibernate
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
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
Para que serve● Mapear Dados / Objectos● Fornecer serviços que:
– permitam carregar os objectos– permitam persistir os objectos
Operações CRUDC – createR – retrieveU – updateD - delete
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
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
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)
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)● ...
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
Produtividade?● opção tradicional
– +/- 50 linhas de código para operações CRUD– +/- 5 linhas de código para operações CRUD
Por onde começar● www.nhibernate.org● instalar
– \\vitorsilva\downloads\libs\nhibernate-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 Files\Microsoft Visual Studio .NET 2003\Common7\Packages\schemas\xml
1º Exemplo● criar uma base de dados access● nessa base de dados criar uma tabela
chamada utilizadores
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”
1º Exemplo● Configurações nHibernate
– adicionar referencia ao assembly Nhibernate.dll– adicionar referencia ao assembly log4net.dll
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
1º Exemplo● analisar código
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()>
1º Exemplo● analisar código
1º Exemplo● Configurações nHibernate
– mapeamento tabela entidades / objecto Entidade● acrescentar ficheiro xml chamado Entidade.hbm.xml● substituir conteudo automático pelo ficheiro
codigo0403_02.txt● nas propriedades desse ficheiro mudar propriedade build
action para “Embedded Resource”
1º Exemplo● analisar código
1º Exemplo● no formulario incluir um botão● incluir no formulário o código do ficheiro
codigo0403_03.txt
1º Exemplo● analisar código
1º Exemplo● Testar
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
2º Exemplo– alterar ficheiro Entidade.hbm.xml para o ficheiro
codigo0403_05.txt
2º Exemplo● Testar
2º Exemplo● incluir um novo botão no formulário● incluir nesse botao o código do ficheiro
codigo0403_04.txt
2º Exemplo● analisar código
2º Exemplo● Testar
3º Exemplo● Relações Um para Muitos
– Criar uma nova classe chamada Artigo
3º Exemplo● Criar na base de dados uma tabela chamada
artigos
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
3º Exemplo● analisar código
3º Exemplo● testar
3º Exemplo● alterar mapeamento entidade
● acrescentar propriedade Artigos no objecto Entidade
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
4º Exemplo● analisar código
4º Exemplo● testar
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
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.