SlideShare uma empresa Scribd logo
1 de 40
Baixar para ler offline
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 CRUD
               C – create
               R – retrieve
               U – update
               D - 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
    –   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
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.

Mais conteúdo relacionado

Mais procurados

Fluxo dinâmicos usando spring aplication
Fluxo dinâmicos usando spring aplicationFluxo dinâmicos usando spring aplication
Fluxo dinâmicos usando spring aplicationJeison Barros
 
Stored Procedures and Triggers
Stored Procedures and TriggersStored Procedures and Triggers
Stored Procedures and Triggersflaviognm
 
Grails - Destaques (para quem já sabe Java)
Grails - Destaques (para quem já sabe Java)Grails - Destaques (para quem já sabe Java)
Grails - Destaques (para quem já sabe Java)Douglas Mendes
 
ParallaDB - Framework de Persistência Android e Desktop
ParallaDB - Framework de Persistência Android e DesktopParallaDB - Framework de Persistência Android e Desktop
ParallaDB - Framework de Persistência Android e DesktopMichel Montenegro
 
LINQ - Language Integrated Query
LINQ - Language Integrated QueryLINQ - Language Integrated Query
LINQ - Language Integrated QueryDalton Valadares
 
Mobileconf dicas-android
Mobileconf dicas-androidMobileconf dicas-android
Mobileconf dicas-androidAlberto Souza
 
Spock Framework 2
Spock Framework 2Spock Framework 2
Spock Framework 2Ismael
 
JavaScript - Objectos e Arrays
JavaScript - Objectos e ArraysJavaScript - Objectos e Arrays
JavaScript - Objectos e ArraysValter Cinquenta
 
Palestra CouchDB III ENSOL
Palestra CouchDB III ENSOLPalestra CouchDB III ENSOL
Palestra CouchDB III ENSOLAllisson Azevedo
 
Exemplos de uso de apache spark usando aws elastic map reduce
Exemplos de uso de apache spark usando aws elastic map reduceExemplos de uso de apache spark usando aws elastic map reduce
Exemplos de uso de apache spark usando aws elastic map reduceFelipe
 
Aula09 phonegap storage_connection
Aula09 phonegap storage_connectionAula09 phonegap storage_connection
Aula09 phonegap storage_connectionRoberson Alves
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Fabrízio Mello
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)Helder da Rocha
 

Mais procurados (20)

Fluxo dinâmicos usando spring aplication
Fluxo dinâmicos usando spring aplicationFluxo dinâmicos usando spring aplication
Fluxo dinâmicos usando spring aplication
 
Stored Procedures and Triggers
Stored Procedures and TriggersStored Procedures and Triggers
Stored Procedures and Triggers
 
Grails - Destaques (para quem já sabe Java)
Grails - Destaques (para quem já sabe Java)Grails - Destaques (para quem já sabe Java)
Grails - Destaques (para quem já sabe Java)
 
6 curso-titanium-dados
6 curso-titanium-dados6 curso-titanium-dados
6 curso-titanium-dados
 
Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1
 
Bd sql (1)
Bd sql (1)Bd sql (1)
Bd sql (1)
 
ParallaDB - Framework de Persistência Android e Desktop
ParallaDB - Framework de Persistência Android e DesktopParallaDB - Framework de Persistência Android e Desktop
ParallaDB - Framework de Persistência Android e Desktop
 
LINQ - Language Integrated Query
LINQ - Language Integrated QueryLINQ - Language Integrated Query
LINQ - Language Integrated Query
 
Mobileconf dicas-android
Mobileconf dicas-androidMobileconf dicas-android
Mobileconf dicas-android
 
Python e bancos NoSQL
Python e bancos NoSQLPython e bancos NoSQL
Python e bancos NoSQL
 
Spock Framework 2
Spock Framework 2Spock Framework 2
Spock Framework 2
 
JavaScript - Objectos e Arrays
JavaScript - Objectos e ArraysJavaScript - Objectos e Arrays
JavaScript - Objectos e Arrays
 
Palestra CouchDB III ENSOL
Palestra CouchDB III ENSOLPalestra CouchDB III ENSOL
Palestra CouchDB III ENSOL
 
Aula de Node
Aula de NodeAula de Node
Aula de Node
 
Exemplos de uso de apache spark usando aws elastic map reduce
Exemplos de uso de apache spark usando aws elastic map reduceExemplos de uso de apache spark usando aws elastic map reduce
Exemplos de uso de apache spark usando aws elastic map reduce
 
Aula09 phonegap storage_connection
Aula09 phonegap storage_connectionAula09 phonegap storage_connection
Aula09 phonegap storage_connection
 
Palestra2009
Palestra2009Palestra2009
Palestra2009
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012
 
Java 08
Java 08Java 08
Java 08
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)
 

Semelhante a Desenvolvimento em .Net - nHibernate

Desenvolvimento em .Net - Reflection
Desenvolvimento em .Net - ReflectionDesenvolvimento em .Net - Reflection
Desenvolvimento em .Net - ReflectionVitor Silva
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotationeduardo dias
 
Desenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geralDesenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geralHelder Lopes
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1Thyago Maia
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdoJorge Luís Gregório
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlDiego Tremper
 
Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webelliando dias
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01julianabdpaiva
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosVitor Silva
 
PDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETPDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETslides_teltools
 
Tutorial visão automação de testes e casper js
Tutorial visão automação de testes e casper jsTutorial visão automação de testes e casper js
Tutorial visão automação de testes e casper js4ALL Tests
 
Tutorial - Visão sobre Automação de Testes com CasperJS
Tutorial - Visão sobre Automação de Testes com CasperJSTutorial - Visão sobre Automação de Testes com CasperJS
Tutorial - Visão sobre Automação de Testes com CasperJSFrederico Allan
 
Workshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.jsWorkshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.jsFábio Elísio
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 

Semelhante a Desenvolvimento em .Net - nHibernate (20)

Desenvolvimento em .Net - Reflection
Desenvolvimento em .Net - ReflectionDesenvolvimento em .Net - Reflection
Desenvolvimento em .Net - Reflection
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
Desenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geralDesenvolvimento web com vs2012: Uma visão geral
Desenvolvimento web com vs2012: Uma visão geral
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Python 07
Python 07Python 07
Python 07
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 3 - 2019.1
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControl
 
Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento web
 
Python 06
Python 06Python 06
Python 06
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a Dados
 
Node JS - Parte 2
Node JS - Parte 2Node JS - Parte 2
Node JS - Parte 2
 
Ruby On Rails Regis
Ruby On Rails RegisRuby On Rails Regis
Ruby On Rails Regis
 
PDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETPDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NET
 
Tutorial visão automação de testes e casper js
Tutorial visão automação de testes e casper jsTutorial visão automação de testes e casper js
Tutorial visão automação de testes e casper js
 
Tutorial - Visão sobre Automação de Testes com CasperJS
Tutorial - Visão sobre Automação de Testes com CasperJSTutorial - Visão sobre Automação de Testes com CasperJS
Tutorial - Visão sobre Automação de Testes com CasperJS
 
Workshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.jsWorkshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.js
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 

Mais de Vitor Silva

Forum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No PortoForum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No PortoVitor Silva
 
Desenvolvimento em .Net - Deployment
Desenvolvimento em .Net - DeploymentDesenvolvimento em .Net - Deployment
Desenvolvimento em .Net - DeploymentVitor Silva
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosVitor Silva
 
Desenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs ObjectosDesenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs ObjectosVitor Silva
 
Desenvolvimento em .Net - Databinding
Desenvolvimento em .Net - DatabindingDesenvolvimento em .Net - Databinding
Desenvolvimento em .Net - DatabindingVitor Silva
 
Desenvolvimento em .Net - Eventos
Desenvolvimento em .Net - EventosDesenvolvimento em .Net - Eventos
Desenvolvimento em .Net - EventosVitor Silva
 
Desenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesDesenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesVitor Silva
 
Desenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User InterfaceDesenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User InterfaceVitor Silva
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoVitor Silva
 
Desenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosDesenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosVitor Silva
 
Desenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e InterfacesDesenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e InterfacesVitor Silva
 
Desenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioDesenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioVitor Silva
 
Desenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas BasicasDesenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas BasicasVitor Silva
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkVitor Silva
 

Mais de Vitor Silva (15)

Cidadania20
Cidadania20Cidadania20
Cidadania20
 
Forum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No PortoForum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No Porto
 
Desenvolvimento em .Net - Deployment
Desenvolvimento em .Net - DeploymentDesenvolvimento em .Net - Deployment
Desenvolvimento em .Net - Deployment
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes Unitários
 
Desenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs ObjectosDesenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs Objectos
 
Desenvolvimento em .Net - Databinding
Desenvolvimento em .Net - DatabindingDesenvolvimento em .Net - Databinding
Desenvolvimento em .Net - Databinding
 
Desenvolvimento em .Net - Eventos
Desenvolvimento em .Net - EventosDesenvolvimento em .Net - Eventos
Desenvolvimento em .Net - Eventos
 
Desenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesDesenvolvimento em .Net - Excepções
Desenvolvimento em .Net - Excepções
 
Desenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User InterfaceDesenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User Interface
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
 
Desenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosDesenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a Objectos
 
Desenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e InterfacesDesenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e Interfaces
 
Desenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioDesenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual Studio
 
Desenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas BasicasDesenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas Basicas
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A Framework
 

Desenvolvimento em .Net - nHibernate

  • 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
  • 16. 1º Exemplo ● analisar código
  • 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()>
  • 18. 1º Exemplo ● analisar código
  • 19. 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”
  • 20. 1º Exemplo ● analisar código
  • 21. 1º Exemplo ● no formulario incluir um botão ● incluir no formulário o código do ficheiro codigo0403_03.txt
  • 22. 1º Exemplo ● analisar código
  • 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
  • 27. 2º Exemplo ● incluir um novo botão no formulário ● incluir nesse botao o código do ficheiro codigo0403_04.txt
  • 28. 2º Exemplo ● analisar código
  • 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
  • 33. 3º Exemplo ● analisar código
  • 35. 3º Exemplo ● alterar mapeamento entidade ● acrescentar propriedade Artigos no objecto Entidade
  • 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
  • 37. 4º Exemplo ● analisar código
  • 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.