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.

por Vitor Silva



Comments are closed.