Escolar Documentos
Profissional Documentos
Cultura Documentos
O Processo de Desenvolvimento
1 USE NHibernate
2 GO
3
4 CREATE TABLE users (
5 LogonID nvarchar(20) NOT NULL default '0',
6 Name nvarchar(40) default NULL,
7 Password nvarchar(20) default NULL,
8 EmailAddress nvarchar(40) default NULL,
9 LastLogon datetime default NULL,
10 PRIMARY KEY (LogonID)
11 GO
12 )
1 using System;
2
3 namespace CS
4 {
5 public class User
6 {
7 private string id;
8 private string userName;
9 private string password;
10 private string emailAddress;
11 private DateTime lastLogon;
12
13 public User(){}
14
15 private string Id
16 {
17 get { return id; }
18 set { id = value; }
19 }
20
21 private string UserName
22 {
23 get { return userName; }
24 set { userName = value; }
25 }
26
27 private string Password
28 {
29 get { return password; }
30 set { password = value; }
31 }
32
33 private string EmailAddress
34 {
35 get { return emailAddress; }
36 set { emailAddress = value; }
37 }
38
39 private DateTime LastLogon
40 {
41 get { return lastLogon; }
42 set { lastLogon = value; }
43 }
44 }
45 }
Com a tabela criada na Base de Dados e a nossa Classe .NET também escrita, ainda
necessitamos uma maneira de dizer ao NHibernate quais as propriedades da Classe
.NET que receberá as informações das colunas da tabela da Base de Dados. Isto é
realizado através de um arquivo de mapeamento, escrito em formato XML, tendo
cada classe seu respectivo arquivo XML de mapeamento.
Analisando o código acima, o que mais nos chama a atenção são as tags class e
table, onde definimos o nome da Classe e o nome da Tabela da Base de Dados de
onde será recuperado e/ou inserido os dados. No caso de nosso exemplo, estamos
mapeando os dados da tabela "users" para a classe "User".
Logo mais abaixo temos as propriedades que compõem nosso objeto. Internamento
o NHibernate varre este arquivo recuperando os atributos "name", que
correspondem as propriedades da nossa Classe User. É recuperado também o
atributo "column", que se refere a coluna correspondente na Base de Dados,
lembrando que este atributo é opcional, e quando ocultado o NHibernate assume
que o nome da coluna na Base de Dados é o mesmo da Propriedade.
Ainda falta dizermos ao NHibernate onde ele deverá ir buscar e persistir os dados.
A maneira mais fácil e simples é criando uma seção de configuração dentro do
arquivo de configuração da aplicação (Web.Config ou App.Config). Isto é
equivalente a usar as propriedades de configuração do NHibernate. Abaixo veremos
como criar a seção de configuração dentro do arquivo App.Config:
Até agora fizemos o trabalho árduo. Se tudo ocorreu como esperamos, até o
momento temos:
Abaixo os passos que devemos seguir para utilizar o NHibernate para recuperar e
inserir os dados na Base de Dados:
Como podemos ver no código acima, um novo objeto do tipo User é criado,
definimos as suas propriedades e depois o passamos para o método Save(...) do
NHibernate, que baseando-se no arquivo XML de mapeamento correspondente, faz
a persistência do objeto de forma "mágica" na nossa Base de Dados.
1 session = factory.OpenSession();
2
3 User joeCool = (User)session.Load(typeof(User), "joe_cool");
4
5 joeCool.EmailAddress = "tt@tt.com";
6 session.Flush();
Podemos também recuperar uma lista de objetos da nossa Base de Dados através
do NHibernate. Utilizamos a Interface IList para isto, qual encontra-se dentro do
Namespace System.Collections. Um exemplo simples seria algo como:
1 session = factory.OpenSession();
2
3 IList userList = session.CreateCriteria(typeof(User)).List();
4
5 foreach(User user in userList)
6 Console.WriteLine(user.Id + " último login em " + user.LastLogon);