Nelle lezioni precedenti abbiamo accennato alla transazionalità delle operazioni, senza però specificare quale componente la implementasse.
Transaction Manager
Responsabile delle transazioni è il TransactionManager, un componente in grado di creare e gestire le transazioni attraverso un datasource e al cui utilizzo si affida HibernateTemplate.
Spring fornisce diversi transaction manager, uno per ogni tecnologia ORM supportata. Nel caso preso in esempio quello da utilizzare è il HibernateTransactionManager in grado di operare tramite una session factory.
Oltre al transaction manager occore anche specificare, attraverso il tag tx:annotation-driven che le direttive di transazione vengono fornite attraverso l'utilizzo di annotations.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- ... -->
<tx:annotation-driven />
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- ... -->
</beans>
Hibernate Template
Passiamo ora alla configurazione del template hibernate discusso in precedenza
<!-- ... -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- ... -->
</beans>
Book Dao
A questo punto l'ultimo bean rimasto da configurare è semplicemente quello rappresentate l'implementazione specifica del Book Dao.
<!-- ... -->
<bean id="bookDao" class="it.html.spring.book.BookHibernateDaoSupport">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
<!-- ... -->
</beans>
In caso di utilizzo della classe HibernateDaoSupport è possibile iniettare nel BookDao direttamente un TransactionManager rendendo di fatto inutile configurare HibernateTemplate. Sarà poi la stessa classe di supporto responsabile di istanziare un oggetto di tipo HibernateTemplate.
Se vuoi aggiornamenti su Development inserisci la tua email nel box qui sotto: