Titolo

Archivio dei tag

Il pattern “Unit of Work”

Hibernate implementa in maniera nascosta all’utilizzatore il pattern “Unit of Work”. Tale funzionalità è implicita all’interno del meccanismo di sessione e transazione che espone. In pratica è l’esposizione dell’oggetto Session di Hibernate a garantire all’utilizzatore la possibilità di aggiungere un’operazione all’interno dell’UnitOfWork e quindi a premettere la realizzazione di operazioni transazionali. L’adozione di una classe centralizzata che si interfaccia con il database non garantisce di per se l’indipendenza dal framework Hibernate, volendo gestire in transazione una serie di operazioni, in quanto dovendo esporre gli oggetti Session e Transaction, che sono propri di Hibernate, si crea una dipendenza forte dalla libreria. Per realizzare una funzionalità veramente indipendente è necessario introdurre il concetto di UnitOfWork ad un livello più alto, in modo tale che anche l’utilizzatore adotti solo concetti propri . Così facendo sarà possibile cambiare framework per l’accesso ai dati in maniera trasparente per l’applicazione. Molti framework o prodotti commerciali soddisfano questo requisito incapsulando gli oggetti tipici dell’accesso ai dati in classi propri. Questo approccio è sicuramente efficace e di facile implementazione tuttavia vincola l’applicazione a ragionare sempre seguendo le modalità stabilite all’interno di Hibernate. Per assurdo, se fosse stato proprio uno di questi principi a portare al cambio di libreria, al termine dell’operazione  il problema rimarrebbe immutato. L’approccio di implementare esplicitamente il pattern UnitOfWork risulta leggermente più complesso ma: read more