XX. Etude de cas - version 2▲
Nous présentons maintenant la version finale de notre application :
Le nouveau projet Netbeans [pam-02] est obtenue par recopie du projet [pam-01] :
- en [1], on copie le nouveau projet
- en [2], on nomme le nouveau projet [pam-02] et on précise son dossier
- en [3], le nouveau projet [pam-02]
Pour " brancher " la vraie couche [metier] sur la couche web que nous avons construite, il faut faire trois choses :
- supprimer la couche [metier] simulée que nous avions créée
- configurer Spring pour qu'il instancie la vraie couche [metier] qui se trouve dans l'archive [pam-spring-metier-dao-jpa-hibernate.jar].
- ajouter au projet toutes les archives nécessaires (Spring, Hibernate, Jpa, pilote Jdbc de MySQL).
Le fichier de configuration de Spring [WEB-INF/applicationContext.xml] devient le suivant :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
<?
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
"
>
<!--
couches
applicatives
-->
<!--
web
-->
<
bean
id
=
"
config
"
class
=
"
web.Config
"
init-method
=
"
init
"
>
<
property
name
=
"
metier
"
ref
=
"
metier
"
/
>
<
/
bean
>
<!--
métier
-->
<
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
"
/
>
<!--
configuration
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
source
de
donnéees
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
>
<!--
le
gestionnaire
de
transactions
-->
<
tx
:
annotation-driven
transaction-manager
=
"
txManager
"
/
>
<
bean
id
=
"
txManager
"
class
=
"
org.springframework.orm.jpa.JpaTransactionManager
"
>
<
property
name
=
"
entityManagerFactory
"
ref
=
"
entityManagerFactory
"
/
>
<
/
bean
>
<!--
traduction
des
exceptions
-->
<
bean
class
=
"
org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor
"
/
>
<!--
persistence
-->
<
bean
class
=
"
org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor
"
/
>
<
/
beans
>
Les lignes 36-41 configurent l'accès à la base de données.
L'ajout des nouvelles bibliothèques (Spring, Hibernate, Jpa, pilote Jdbc de MySQL) se fait à partir du dossier [lib] [2]. On prend l'intégralité du dossier. Il y a plusieurs dizaines de fichiers .jar à ajouter [1] :
Il a été assez difficile de constituer cette bibliothèque car ces frameworks utilisent parfois les mêmes archives. Il faut alors supprimer les doublons. Ces fichiers ont été rassemblés dans le dossier [lib] [2] dans l'archive des exemples de ce document afin que le lecteur n'ait pas à reconstituer lui-même cette bibliothèque.
C'est tout. La nouvelle application [pam-02] va désormais travailler avec le SGBD. Voici une copie d'écran d'un calcul de salaire :
Cette fois-ci, le salaire calculé est le vrai salaire et non le salaire fictif de la version 1. Le lecteur est invité à tester la nouvelle application.