20. Fallstudie – Version 2
Wir stellen nun die endgültige Version unserer Anwendung vor:
![]() |
Das neue NetBeans-Projekt [pam-02] wird durch Kopieren des Projekts [pam-01] erstellt:
![]() |
- in [1], das neue Projekt wird kopiert
- in [2], das neue Projekt wird in [pam-02] umbenannt und der Ordner angegeben
- in [3], das neue Projekt [pam-02]
Um die echte Ebene [metier] mit der von uns erstellten Web-Ebene zu „verbinden“, müssen drei Schritte durchgeführt werden:
- die simulierte Schicht [metier] löschen, die wir erstellt hatten
- Spring so konfigurieren, dass es die echte Schicht [metier] instanziiert, die sich im Archiv [pam-spring-metier-dao-jpa-hibernate.jar] befindet.
- dem Projekt alle erforderlichen Archive hinzufügen (Spring, Hibernate, JPA, JDBC-Treiber von MySQL).
Die Spring-Konfigurationsdatei [WEB-INF/applicationContext.xml] sieht nun wie folgt aus:
<?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">
<!-- Anwendungsschichten -->
<!-- Web -->
<bean id="config" class="web.Config" init-method="init">
<property name="metier" ref="metier"/>
</bean>
<!-- Geschäftsprozess -->
<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" />
<!-- Konfiguration 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>
<!-- die Datenquelle 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>
<!-- der Transaktionsmanager -->
<tx:annotation-driven transaction-manager="txManager" />
<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<!-- Ausnahmebehandlung -->
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
<!-- Persistenz -->
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
</beans>
Die Zeilen 36–41 konfigurieren den Zugriff auf die Datenbank.
Das Hinzufügen der neuen Bibliotheken (Spring, Hibernate, JPA, JDBC-Treiber von MySQL) erfolgt aus dem Ordner [lib] [2]. Der gesamte Ordner wird übernommen. Es sind mehrere Dutzend .jar-Dateien hinzuzufügen: [1]:
![]() |
Es war ziemlich schwierig, diese Bibliothek zusammenzustellen, da diese Frameworks manchmal dieselben Archive verwenden. Daher müssen die Duplikate entfernt werden. Diese Dateien wurden im Ordner [lib] [2] im Beispielarchiv dieses Dokuments zusammengestellt, damit der Leser diese Bibliothek nicht selbst neu zusammenstellen muss.
Das war’s. Die neue Anwendung [pam-02] arbeitet nun mit SGBD zusammen. Hier ist ein Screenshot einer Gehaltsberechnung:

Diesmal handelt es sich bei dem berechneten Gehalt um das tatsächliche Gehalt und nicht um das fiktive Gehalt aus Version 1. Der Leser ist eingeladen, die neue Anwendung zu testen.


