DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da .net Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Artigo .net Magazine 60 - Produtividade com NHibernate 2.0

Artigo da Revista .NET Magazine - Edição 60.

Esse artigo faz parte da revista .NET Magazine edição 60. Clique aqui para ler todos os artigos desta edição

 

imagem_pdf.jpg

 

Expert – Boas Práticas

Produtividade com NHibernate 2.0

ActiveWriter e ActiveRecord

 

Antes de começar eu gostaria de falar de um artigo polêmico que eu escrevi sobre LINQ e NHibernate, há algum tempo atrás aqui na .NET Magazine. Digo polêmico porque muita gente “se incomodou” com o título do artigo, que foi LINQ X NHibernate.

O fato é que não é possível realizar uma comparação literal entre o LINQ e o NHibernate, já que são coisas completamente diferentes. O LINQ é uma linguagem para a execução de queries e o NHibernate é uma ferramenta O/RM, como iremos ver a seguir. (O/RM é a sigla em inglês para mapeamento objeto-relacional. Veja detalhes na nota do devman)

Na ocasião eu tentei deixar isso bem claro no próprio artigo, que na verdade traçou um paralelo entre o LINQ to SQL e Entity Framework com o NHibernate. Portanto, se você só leu o título do artigo pode ter ficado com a impressão errada.

Mas o fato de eu estar recordando deste artigo, é que ele está intimamente relacionado com este que você lê agora. No paralelo que foi traçado, colocamos na balança os prós e contras de se utilizar o NHibernate e as novas ferramentas de mapeamento da Microsoft (Entity Framework e LINQ to SQL). E no final das contas concluímos que o Entity Framework sairia ganhando, principalmente pela facilidade do seu uso, diferente do NHibernate que pode ser bastante trabalhoso.

Agora é a hora do troco. Atendendo à pedidos, fizemos uma pesquisa e encontramos algumas ferramentas que podem tornar o trabalho com o NHibernate bem mais prático do que o seu uso tradicional.

Aproveitando a oportunidade, vamos conhecer neste artigo a versão 2.0.1.GA NHIbernate, que foi lançada recentemente. E o objetivo principal deste artigo será mostrar como utilizar o NHibernate da forma mais prática e ágil possível, diminuindo ao máximo o trabalho “braçal” que é necessário em ferramentas de O/RM.

        

Nota do DevMan

Mapeamento objecto-relacional (ou O/RM) é uma técnica de desenvolvimento utilizada para reduzir a impedância da programação orientada a objetos utilizando bancos de dados relacionais. As tabelas do banco de dados são representadas através de classes e os registros de cada tabela são representados como instâncias das classes correspondentes.

 

Com esta técnica, o programador não precisa de se preocupar com os comandos em linguagem SQL; irá usar uma interface de programação simples que faz todo o trabalho de persistência.

 

Não é necessária uma correspondência direta entre as tabelas de dados e as classes do programa. A relação entre as tabelas onde originam os dados e o objeto que os disponibiliza é configurada pelo programador, isolando o código do programa das alterações à organização dos dados nas tabelas do banco de dados.

 

"



ATENÇÃO! A exibição deste artigo foi interrompida.


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da .net Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    2 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Robson Lopes
Boa tarde Rodrigo, primeiramente este post está muito bom, entretanto estou com um problema ao  tentar  rodar o projeto, fui seguindo  o seu  post  até a parte onde você criou um outro projeto  Desktop eu  fiz um projeto Web só que está dando  o seguinte erro.
 
 
"   Model.Aluno.hbm.xml(6,4): XML validation error: The element 'class' in namespace
'urn:nhibernate-mapping-2.2' has invalid child element 'property' in namespace 'urn:nhibernate-mapping-2.2'.
List of possible elements expected: 'meta, jcs-cache, cache, id, composite-id' in namespace 'urn:nhibernate-mapping-2.2'.    "
 
Já verifiquei o mapeamento  e não  vi  nada de errado.

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">

<class name="Model.Aluno, Model" table="aluno" lazy="false">

<!-- could not find a primary key for this table/view. NHibernate requires an 'id' element, so you'll have to define one manually. -->

<property name="id" column="Id" type="short"/>

<property name="nome" column="Nome" type="String(50)"/>

<property name="cpf" column="Cpf" type="short"/>

</class>

</hibernate-mapping>
 
Você poderia me ajudar.
[há +1 ano] - Responder

 

[autor] Rodrigo Sendin
Olá Robson, como vai?
 
Vejo dois possíveis problemas no seu mapeamento.
 
1. Faltou você definir um "ID" para sua classe, veja um exemplo:
  <id name="Id" column="ID_USUARIO" unsaved-value="0">
   <generator class="native"/>
  </id>
 
2. As propriedades da sua classe estão com o nome exatamente igual às propriedades que você definiu no mapeamento? Lembra-se que elas precisam ser identicas (case-sensitive).
 
Qualquer problema adicional me avise.
Abraço
[há +1 ano] - Responder
 



Publicidade
Autor
Rodrigo Sendin

é Arquiteto de Sistemas e trabalha com desenvolvimento de Software há mais de 13 anos. Tecnólogo formado pela FATEC de Americana e MCP .NET.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
2   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03