« Opções para integração progress / outras aplicações | Entrada | Code as Design »
março 20, 2005
uma semana a nhibernar
passei a ultima semana a desenvolver um projecto onde utilizei pela primeira vez o nhibernate. socorri-me de alguns artigos interessantes que me ajudaram a ter uma ideia geral do que é o nhibernate e de que forma poderia integrar essa tecnologia fantastica.
mas como é costume os artigos ficam sempre um bocadinho aquém daquilo que realmente precisamos...
um dos problemas tem a ver com a base de dados utilizada... já sei que hoje em dia ninguém usa o access para fazer apliacações a sério mas no meu caso não tive escolha, é access e ponto final... e claro... o nhibernate não se dá muito bem com o access, aliás não se dá nada bem. por isso temos que contornar o problema dizendo ao nhibernate que estamos a usar uma versão do sqlserver mas na realidade definir uma connection string que aponte para um ficheiro access. para além disso tudo o que seja relações 1-n com mais do que um nível é para esquecer. por exemplo supondo que temos uma estrutura do tipo grupo->utilizadores->moradas não podemos definir todas estas relações no nhibernate, teremos que seleccionar só uma.
ainda em relação ao access, como não suporta a sintaxe do sqlserver @@identity, podemos esquecer a utilização de autonumbers.
outra questão é que o projecto que estou a desenvolver é em winforms... e claro 99,99% dos exemplos é orientado para web... nesse tipo de projectos não há muito que pensar em relação a ligações a bases de dado, é ligar e desligar o mais rapidamente possivel todos os acessos que tivermos que fazer a ela, o mesmo se passando com o nhibernate, basicamente teriamos nhibernate.session.open e no fim session.close. tratando-se de winforms, embora o principio se aplique mais ou menos, levanta-se a questão da utilização do método close ou disconnect... em principio o disconnect será mais vantajoso mas também implica um bocado mais de código já que a partir do momento em que fazemos disconnect de um objecto, os outros objectos associados (normalmente coleções referentes a tabelas relacionadas) deixam de estar disponiveis e lá se vai o lazy loading.
Publicado por vitorsilva às março 20, 2005 10:10 PM