SlideShare uma empresa Scribd logo
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 aplication
Jeison Barros
 
Stored Procedures and Triggers
Stored Procedures and TriggersStored Procedures and Triggers
Stored Procedures and Triggers
flaviognm
 
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
 
6 curso-titanium-dados
6 curso-titanium-dados6 curso-titanium-dados
6 curso-titanium-dados
Fernando Lunardelli
 
Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1
Luiz Henrique Zambom Santana
 
Bd sql (1)
Bd sql (1)Bd sql (1)
Bd sql (1)
jheyeizah
 
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
Michel Montenegro
 
LINQ - Language Integrated Query
LINQ - Language Integrated QueryLINQ - Language Integrated Query
LINQ - Language Integrated Query
Dalton Valadares
 
Mobileconf dicas-android
Mobileconf dicas-androidMobileconf dicas-android
Mobileconf dicas-android
Alberto Souza
 
Python e bancos NoSQL
Python e bancos NoSQLPython e bancos NoSQL
Python e bancos NoSQL
Marinho Brandão
 
Spock Framework 2
Spock Framework 2Spock Framework 2
Spock Framework 2
Ismael
 
JavaScript - Objectos e Arrays
JavaScript - Objectos e ArraysJavaScript - Objectos e Arrays
JavaScript - Objectos e Arrays
Valter Cinquenta
 
Palestra CouchDB III ENSOL
Palestra CouchDB III ENSOLPalestra CouchDB III ENSOL
Palestra CouchDB III ENSOL
Allisson Azevedo
 
Aula de Node
Aula de NodeAula de Node
Aula de Node
Alexandre Oliveira
 
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
Felipe
 
Aula09 phonegap storage_connection
Aula09 phonegap storage_connectionAula09 phonegap storage_connection
Aula09 phonegap storage_connection
Roberson Alves
 
Palestra2009
Palestra2009Palestra2009
Palestra2009
Rildo Pragana
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012
Fabrízio Mello
 
Java 08
Java 08Java 08
Java 08
samuelthiago
 
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 - Reflection
Vitor Silva
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
eduardo 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 geral
Helder Lopes
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
Guilherme Blanco
 
Python 07
Python 07Python 07
Python 07
Bruno Catão
 
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
Thyago 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 pdo
Jorge 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 phpUnderControl
Diego 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 web
elliando dias
 
Python 06
Python 06Python 06
Python 06
Bruno Catão
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
antonio sérgio nogueira
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01
julianabdpaiva
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a Dados
Vitor Silva
 
Node JS - Parte 2
Node JS - Parte 2Node JS - Parte 2
Node JS - Parte 2
Bruno Catão
 
Ruby On Rails Regis
Ruby On Rails RegisRuby On Rails Regis
Ruby On Rails Regis
elliando dias
 
PDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETPDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NET
slides_teltools
 
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
Frederico Allan
 
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
4ALL Tests
 
Workshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.jsWorkshop Mundo Senai - Hello, Angular.js
Workshop Mundo Senai - Hello, Angular.js
Fá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 PHP
Arlindo 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 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
 
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
 
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

Cidadania20
Cidadania20Cidadania20
Cidadania20
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 Porto
Vitor Silva
 
Desenvolvimento em .Net - Deployment
Desenvolvimento em .Net - DeploymentDesenvolvimento em .Net - Deployment
Desenvolvimento em .Net - Deployment
Vitor 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 Objectos
Vitor Silva
 
Desenvolvimento em .Net - Databinding
Desenvolvimento em .Net - DatabindingDesenvolvimento em .Net - Databinding
Desenvolvimento em .Net - Databinding
Vitor Silva
 
Desenvolvimento em .Net - Eventos
Desenvolvimento em .Net - EventosDesenvolvimento em .Net - Eventos
Desenvolvimento em .Net - Eventos
Vitor Silva
 
Desenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesDesenvolvimento em .Net - Excepções
Desenvolvimento em .Net - Excepções
Vitor Silva
 
Desenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User InterfaceDesenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User Interface
Vitor 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 Desenvolvimento
Vitor 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 Objectos
Vitor 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 Interfaces
Vitor 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 Studio
Vitor Silva
 
Desenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas BasicasDesenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas Basicas
Vitor Silva
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A Framework
Vitor 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
 

Último

Gestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefíciosGestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefícios
Rafael Santos
 
Orientações para utilizar Drone no espaço Brasil
Orientações para utilizar Drone no espaço BrasilOrientações para utilizar Drone no espaço Brasil
Orientações para utilizar Drone no espaço Brasil
EliakimArajo2
 
PRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product ownerPRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product owner
anpproferick
 
Teoria de redes de computadores redes .doc
Teoria de redes de computadores redes .docTeoria de redes de computadores redes .doc
Teoria de redes de computadores redes .doc
anpproferick
 
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Annelise Gripp
 
Como fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptxComo fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptx
tnrlucas
 
Por que escolhi o Flutter - Campus Party Piauí.pdf
Por que escolhi o Flutter - Campus Party Piauí.pdfPor que escolhi o Flutter - Campus Party Piauí.pdf
Por que escolhi o Flutter - Campus Party Piauí.pdf
Ian Oliveira
 

Último (7)

Gestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefíciosGestão de dados: sua importância e benefícios
Gestão de dados: sua importância e benefícios
 
Orientações para utilizar Drone no espaço Brasil
Orientações para utilizar Drone no espaço BrasilOrientações para utilizar Drone no espaço Brasil
Orientações para utilizar Drone no espaço Brasil
 
PRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product ownerPRATICANDO O SCRUM Scrum team, product owner
PRATICANDO O SCRUM Scrum team, product owner
 
Teoria de redes de computadores redes .doc
Teoria de redes de computadores redes .docTeoria de redes de computadores redes .doc
Teoria de redes de computadores redes .doc
 
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
Ferramentas e Técnicas para aplicar no seu dia a dia numa Transformação Digital!
 
Como fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptxComo fui de 0 a lead na gringa em 3 anos.pptx
Como fui de 0 a lead na gringa em 3 anos.pptx
 
Por que escolhi o Flutter - Campus Party Piauí.pdf
Por que escolhi o Flutter - Campus Party Piauí.pdfPor que escolhi o Flutter - Campus Party Piauí.pdf
Por que escolhi o Flutter - Campus Party Piauí.pdf
 

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.