Skip to content

20. Caso di studio – versione 2

Presentiamo ora la versione finale della nostra applicazione:

Il nuovo progetto NetBeans [pam-02] è stato ottenuto copiando il progetto [pam-01]:

  • in [1], si copia il nuovo progetto
  • in [2], si rinomina il nuovo progetto [pam-02] e si specifica la sua cartella
  • in [3], il nuovo progetto [pam-02]

Per "collegare" il vero livello [metier] al livello web che abbiamo creato, occorre fare tre cose:

  1. eliminare il livello simulato [metier] che avevamo creato
  2. configurare Spring in modo che istanzi il vero livello [metier] che si trova nell’archivio [pam-spring-metier-dao-jpa-hibernate.jar].
  3. aggiungere al progetto tutti gli archivi necessari (Spring, Hibernate, JPA, driver JDBC di MySQL).

Il file di configurazione di Spring [WEB-INF/applicationContext.xml] diventa il seguente:


<?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-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
  
  <!-- livelli applicativi -->
 
<!-- web -->
  <bean id="config" class="web.Config" init-method="init">
    <property name="metier" ref="metier"/>
  </bean>
  <!-- business -->
  <bean id="metier" class="metier.Metier">
    <property name="employeDao" ref="employeDao"/>
    <property name="cotisationDao" ref="cotisationDao"/>  
  </bean>
  <!-- DAO -->
  <bean id="employeDao" class="dao.EmployeDao" />
  <bean id="indemniteDao" class="dao.IndemniteDao" />
  <bean id="cotisationDao" class="dao.CotisationDao" />
  
  <!-- configurazione JPA -->
  <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="jpaVendorAdapter">
      <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
      </bean>
    </property>
    <property name="loadTimeWeaver">
      <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
    </property>
  </bean>
  
  <!-- la fonte dei dati DBCP -->
  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="URL" value="jdbc:mysql://localhost:3306/dbpam_hibernate" />
    <property name="username" value="root" />
    <property name="password" value="" />
  </bean>
  
  <!-- gestore delle transazioni -->
  <tx:annotation-driven transaction-manager="txManager" />
  <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
  </bean>
  
  <!-- traduzione delle eccezioni -->
  <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
  
  <!-- persistenza -->
  <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
  
</beans>

Le righe 36-41 configurano l'accesso al database.

L'aggiunta delle nuove librerie (Spring, Hibernate, JPA, driver JDBC di MySQL) avviene dalla cartella [lib] [2]. Si prende l'intera cartella. Ci sono diverse decine di file .jar da aggiungere [1]:

È stato piuttosto difficile creare questa libreria poiché questi framework a volte utilizzano gli stessi archivi. È quindi necessario eliminare i duplicati. Questi file sono stati raccolti nella cartella [lib] [2] nell’archivio degli esempi di questo documento, in modo che il lettore non debba ricreare da sé questa libreria.

Questo è tutto. La nuova applicazione [pam-02] funzionerà d’ora in poi con SGBD. Ecco uno screenshot di un calcolo dello stipendio:

 

Questa volta, lo stipendio calcolato è quello reale e non quello fittizio della versione 1. Il lettore è invitato a provare la nuova applicazione.