Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Hibernate DAO: Transaction Manager e Hibernate Template

Inserire il componente per le transazioni e configurare l'utilizzo del template specifico per Hibernate
Inserire il componente per le transazioni e configurare l'utilizzo del template specifico per Hibernate
Link copiato negli appunti

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.

Ti consigliamo anche