Perché il pattern di repository è necessario in NHibernate?

13

Sto leggendo l'ufficiale La tua prima applicazione basata su NHibernate .

Mentre il tutorial è buono e facile da seguire, mi chiedo perché viene utilizzato il pattern Repository.

Nei vari metodi Add , Update , Remove nell'implementazione ProductRepository , il codice è quasi identico - tutti utilizzano le transazioni e la differenza è nella "carne", ad esempio chiama session.Save int il metodo Add , session.Delete nel metodo remove . ( La pagina manca di ancore HTML, ma puoi cercare la pagina per il codice rilevante come public void Remove , public void Add )

Quel codice semplicemente "sembra sbagliato".

Perché l'autore utilizza il modello di repository - è solo per dimostrazione dell'uso di NHibernate o è necessario o per altri motivi?

Ps. Il mio background è da Ruby on Rails che utilizza ActiveRecord, quindi sto cercando di dare un senso a come funziona / utilizzare NHibernate.

    
posta Zabba 06.09.2011 - 10:53
fonte

2 risposte

10

Il pattern del repository non è richiesto. Come per tutti gli altri schemi è una decisione "architettonica" che devi prendere contro le tue esigenze aziendali. In generale, Pattern di repository viene utilizzato per implementare "Entity Persistance Ingorance", ovvero le entità non sanno nulla su come persistere sul dispositivo di archiviazione (database, XML, file di testo, ecc.). Se ad esempio hai un indirizzo di entità non conterrà la logica di persistenza (non troverai da nessuna parte qualcosa come indirizzo.Salva o indirizzo.Aggiornamento) ma passerai la tua entità a un metodo di deposito che ha il compito di persistere modifiche

    
risposta data 06.09.2011 - 11:03
fonte
9

Il vantaggio dell'utilizzo del pattern di repository consiste nel prendere in giro il livello di accesso ai dati, in modo da poter testare il codice del livello aziendale senza chiamare il codice DAL. Ci sono altri grandi vantaggi ma questo sembra essere molto vitale per me.

    
risposta data 26.09.2011 - 07:05
fonte

Leggi altre domande sui tag