Estou lendo o oficial Seu primeiro aplicativo baseado no NHibernate .
Embora o tutorial seja bom e fácil de seguir, estou me perguntando por que o padrão de Repositório é usado.
Nos vários Add
, Update
, Remove
métodos na ProductRepository
implementação, o código é quase idêntico - todos eles estão usando transações, ea diferença está na "carne", isto é chamada session.Save
int o Add
método, session.Delete
no remove
método. ( A página não possui âncoras HTML, mas você pode pesquisar na página o código relevante public void Remove
, como ,public void Add
)
Esse código simplesmente "parece errado".
Por que o autor está usando o padrão Repository - é apenas para demonstração do NHibernate ou é necessário ou por algum outro motivo?
Ps. Meu background é do Ruby on Rails usando o ActiveRecord, então estou tentando entender como o NHibernate funciona / é usado.
fonte
Respostas:
O padrão do repositório não é necessário. Quanto a todo o outro padrão, é uma decisão "arquitetônica" que você deve tomar em relação às suas necessidades de negócios. Em geral, o padrão do repositório é usado para implementar a "Entidade de persistência da entidade", o que significa que suas entidades não sabem nada sobre como persistir no seu dispositivo de armazenamento (banco de dados, XML, TextFile, etc). Se, por exemplo, você tiver um endereço de entidade, ele não conterá a lógica de persistência (você não encontrará em lugar algum algo como address.Save ou address.Update), mas passará sua entidade para um método de repositório responsável por persistir o alterar
fonte
A vantagem de usar o padrão de repositório é zombar da camada de acesso a dados, para que você possa testar o código da camada de negócios sem chamar o código DAL. Existem outras grandes vantagens, mas isso parece ser muito vital para mim.
fonte