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

Configurare Hibernate DAO: dataSource e Session Factory

Configurare tutti i componenti per utilizzare il db tramite Hibernate
Configurare tutti i componenti per utilizzare il db tramite Hibernate
Link copiato negli appunti

Nella lezione precedente abbiamo detto che, grazie ad un HibernateTemplate è possibile implementare un DAO per la persistenza attraverso Hibernate. In realtà, i componenti che entrano in gioco per permettere a HibernateTemplate di svolgere il proprio lavoro sono molteplici, anche se non direttamente visibili, perchè mascherati dall'utilizzo dell'Inversion of Control. È proprio qui infatti che l'utilizzo di IoC esprime un ruolo fondamentale, semplificando notevolmente le operazioni di persistenza.

Passiamo quindi a specificare come configurare questi componenti.

Datasource

Il primo bean da configurare è quello responsabile della connessione verso la sorgente dati. Come per gli esempi relativi a JDBC utilizzeremo il DriverManagerDataSource un semplice datasource in grado di aprire una connessione ogni volta che questa viene richiesta. Questo modo di operare non è certamente dei migliori quanto a gestione delle risorse; per questo motivo, in ambienti più complessi, si suggerisce l'utilizzo di datasource più efficienti come il SingleConnectionDataSource.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
  <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.apache.derby.jdbc.ClientDriver" />
    <property name="url" value="jdbc:derby://localhost:1527/books;create=true" />
    <property name="username" value="app" />
    <property name="password" value="app" />
  </bean>
  <!-- ... -->
</beans>

Session Factory

Per far sì che Hibernate svolga il proprio lavoro di persistenza sono necessarie alcune configurazioni che indicano al framework quali parametri utilizzare per la crezione del SessionFactory, l'oggetto responsabile dell'apertura delle sessioni verso il database. Tali parametri includono:

  1. Datasource da utilizzare per la connessione con il database
  2. Dialetto SQL utilizzato da Hibernate per l'ottimizzazione delle query
  3. Lista degli eventuali file di mapping
  4. Altre informazioni accessorie

Nell'utilizzo classico di hibernate queste configurazioni possono essere espresse sotto forma di file xml (utilizzando il file hibernate.cfg.xml) oppure tramite annotations. A queste modalità Spring aggiunge una terza alternativa sfruttando il meccanismo dell'Inversion of Control per la creazione di SessionFactory e la relativa injection dei parametri necessari.

Di seguito sono mostrate due possibili configurazioni per il bean sessionFactory da impiegare nell'applicazione presa in esempio. In particolare la prima in caso di utilizzo delle annotations JPA per il mapping delle classi da persistere, la seconda in caso di adozione di file XML.

<!-- beans ... -->
  <!-- Session Factory da utilizzare per mapping attraverso JPA Annotations -->
  <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="annotatedClasses">
      <list>
        <value>it.html.spring.book.Book</value>
      </list>
    </property>
    <property name="hibernateProperties">
      <props>
        <prop key="hibernate.dialect">org.hibernate.dialect.DerbyDialect</prop>
        <prop key="hibernate.show_sql">true</prop>
        <prop key="hibernate.hbm2ddl.auto">update</prop>
      </props>
    </property>
  </bean>
  <!-- Session Factory da utilizzare per mapping attraverso file xml-->
  <!-- bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="mappingResources">
      <list>
        <value>book.hbm.xml</value>
      </list>
    </property>
    <property name="hibernateProperties">
      <props>
        <prop key="hibernate.dialect">org.hibernate.dialect.DerbyDialect</prop>
        <prop key="hibernate.show_sql">true</prop>
        <prop key="hibernate.hbm2ddl.auto">update</prop>
      </props>
    </property>
  </bean -->
  <!-- ... -->
</beans>

Per effettuare delle prove è possibile scaricare l'esempio completo (progetto Eclipse).


Ti consigliamo anche