ORM: Sendo produtivo com NHibernate

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    ORM: Sendo produtivo com NHibernate - Presentation Transcript

    1. NHibernate
      Sendo preguiçoso com NHibernate
      Juliano Oliveira
    2. Preguiçalembra...
    3. Preguiçalembra...
    4. Preguiçalembra...
    5. NHibernate
      Sendo preguiçoso com NHibernate
      Juliano Oliveira
    6. NHibernate
      Sendo preguiçoso com NHibernate
      Juliano Oliveira
    7. NHibernate
      Sendo produtivocom NHibernate
      Juliano Oliveira
    8. Ser PRODUTIVO!
    9. Agenda
    10. Agenda
    11. A vida sem ORM
    12. Camada DAL
      publicUsuarioDAL{ public ArrayList<Usuario> retornaUsuarios(){ ..... }
      }
      Camada DTO
      publicclassUsuario { private String _id;
      private String _nome;
      public String Id() { get { return _id; } } public String Nome() { get { return nome; } }
      publicUsuario(String usuarioID, String usuarioNome) { this.usuarioID = usuarioID; this.usuarioNome = usuarioNome; } }
      Camada BLL
      publicUsuarioBLL
      { public ArrayList<Usuario> retornaUsuarios()
      { UsuarioDALusuarioDAL = DALFactory.UsuarioDAL.Create();
      returnusuarioDAL.retornaUsuarios(); } }
      A vida sem ORM
    13. A vida sem ORM
    14. ORM
      ORM é Mapeamento de Objeto-Relacional
      A proposta do ORM
      Resolver a impedância entre OO e ER
      Facilitar o acesso a dados
      Tornar o trabalho mais Orientado a Objetos
    15. O NHibernate mais de perto
      Framework de ORM
      Portado do Hibernate escrito em Java para .Net
      Open-source
      Licença LGPL - uso comercial
      Sistema de queries OO
      HQL
      Criteria API
      Gerenciamento de Sessões e Transações
    16. O NHibernate mais de perto
      Suporta conceitos de OO
      Associação, herança, polimorfismo, coleções, etc...
      Suporta a maior parte dos banco de dados relacionais do mercado
      SQL Server, Oracle, MySQL, PostgreSQL, SQLite, etc ...
      Perfeito para uma arquitetura como o DDD
    17. O NHibernate mais de perto
      Arquitetura
      Aplicação
      Objetos de Persistência
      NHibernate
      configuração
      mapeamento
      Mapeamento dos objetos e entidades relacionais
      Configuração de conexão e banco de dados
      Banco de dados
      Entidades relacionais
    18. Modele entidades, não tabelas
      Modelando classes
      Abstrações
      Entidades
      Objetos de Valor
      Coleções
    19. Modele entidades, não tabelas
    20. Mapeando seu modelo
      Cliente.hbm.xml
      Classe
      Cliente.cs
      Banco de dados
      Tabela Clientes
    21. Mapeando seu modelo
      Classe Cliente.cs
      publicclassCliente
      {
      public virtual intId { get; set; }
      public virtual string Nome { get; set; }
      public virtual string Endereco { get; set; }
      }
    22. Mapeando seu modelo
      Mapeamento Cliente.hbm.xml
      <?xml version="1.0" encoding="utf-8" ?>
      <hibernate-mappingxmlns="urn:nhibernate-mapping-2.2">
      <classname="Cliente" table="Clientes">
      <id name="Id" column="idCliente">
      <generatorclass="hilo" />
      </id>
      <property name="Nome" type="String" length="75" />
      <property name="Endereco" type="String" length="150" />
      </class>
      </hibernate-mapping>
    23. Mapeando seu modelo
      Tabela Clientes
    24. Mapeando seu modelo
      Tags de mapeamento mais usadas
      class
      id
      property
      many-to-one
      one-to-one
      Tags para coleções
    25. Mapeando seu modelo
      Tags de mapeamento para coleções
      set
      coleção de itens únicos
      bag
      coleção de itens que podem se repetir
      list
      uma “bag” indexada por um número inteiro
      map
      uma “bag” indexada por um valor qualquer
    26. Ser PRODUTIVO!
    27. Sendo produtivo com NHibernate
      Ferramenta de exportação e atualização das tabelas do banco de dados
      Com seu modelo pronto, crie suas tabelas no banco de dados com o seguinte comando:
      Configurationcfg = newConfiguration().Configure();
      SchemaExportgenerator = newSchemaExport( cfg );
      generator.Create(true, true);
    28. Sendo produtivo com NHibernate
      Ferramenta de exportação e atualização das tabelas do banco de dados
      Mudança no modelo? Fácil!
      Atualize o banco de dados com o seguinte comando:
      Configurationcfg = newConfiguration().Configure();
      SchemaUpdateupdate = newSchemaUpdate( cfg );
      update.Execute(true, true);
    29. Sendo produtivo com NHibernate
      Nunca mais escreva SQL´s
      Selecionar o “Cliente” de código “222”:
      Clientecliente = _sessao.Get<Cliente>(222);
    30. Sendo produtivo com NHibernate
      Nunca mais escreva SQL´s
      Selecionar todos as entidades “Cliente”:
      IList<Cliente> cliente;
      cliente = _sessao.CreateCriteria<Cliente>().List<Cliente>();
    31. Sendo produtivo com NHibernate
      Nunca mais escreva SQL´s
      Selecionar todos as entidades “Cliente” que tenham comprado mais de 10 vezes:
      stringstrQuery = “from Cliente c wherecount(c.Pedidos) > 10”;
      IList<Cliente> cliente = _sessao
      .CreateQuery(strQuery).List<Cliente>();
    32. Sendo produtivo com NHibernate
      Trabalhe com Objetos
      Clientecliente = newCliente();
      cliente.Nome = “Juliano Oliveira”;
      cliente.Endereço = “São Paulo”;
      _sessao.Save(cliente);
    33. Sendo produtivo com NHibernate
      Trabalhe com Objetos
      Cliente cliente = _sessao.Get<Cliente>(222);
      cliente.Nome = “Juliano P. Oliveira”;
      cliente.Endereço = “Barra Funda”;
      _sessao.Update(cliente);
    34. Sendo produtivo com NHibernate
      Trabalhe com Objetos
      using(vartx = _sessao.BeginTransaction()) {
      Cliente cliente = _sessao.Get<Cliente>(2222);
      ItemDoPedidoitemDoPedido = ItemDoPedidoFactory
      .Quantidade(2)
      .Produto(864)
      .Criar();
      Pedidopedido = newPedido(cliente);
      pedido.AdicionaItemAoPedido(itemDoPedido);
      _sessao.Update(pedido);
      tx.Commit();
      }
    35. Sendo produtivo com NHibernate
      Gerencie sua conexão automaticamente
      protectedvoidApplication_BeginRequest()
      {
      ManagedWebSessionContext.Bind(
      HttpContext.Current,
      SessionManager.SessionFactory.OpenSession());
      }
    36. Sendo produtivo com NHibernate
      Gerencie sua conexão automaticamente
      protectedvoidApplication_EndRequest() {
      ISessionsession = ManagedWebSessionContext.Unbind(
      HttpContext.Current, SessionManager.SessionFactory);
      if (session != null) {
      if (session.Transaction != null && session.Transaction.IsActive)
      session.Transaction.Rollback();
      else {
      session.Flush();
      session.Close();
      }
      }
      }
    37. Exemplos práticos: A Hora do Show
    38. Ferramenta NHProf
    39. Site Oficial do NHibernatehttp://www.nhforge.org/
      Blog AyendeRahien
      http://ayende.com/blog
      NHProf – The NHibernate Profiler
      http://www.nhprof.com
      Projeto de Tradução da Documentação do NHibernate
      http://nhibernate.programandoem.net
      Referências
    40. Dúvidas ?!
      Juliano Oliveira
      jul.oliveira@gmail.com
      http://programandoem.net
      twitter: @juloliveira
    41. Obrigado!
      Não esqueçam de entrar no grupo .Net Architects
      no Google Grupos
      http://groups.google.com/group/dotnetarchitects

    + Juliano OliveiraJuliano Oliveira, 5 months ago

    custom

    769 views, 1 favs, 2 embeds more stats

    Frameworks de mapeamento de objeto-relacional (ORM) more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 769
      • 706 on SlideShare
      • 63 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 21
    Most viewed embeds
    • 62 views on http://programandoem.net
    • 1 views on http://feeds.feedburner.com

    more

    All embeds
    • 62 views on http://programandoem.net
    • 1 views on http://feeds.feedburner.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories