20. Studium przypadku – wersja 2
Przedstawiamy teraz ostateczną wersję naszej aplikacji:
![]() |
Nowy projekt NetBeans [pam-02] powstał poprzez skopiowanie projektu [pam-01]:
![]() |
- do [1], kopiujemy nowy projekt
- do [2], nadajemy nowemu projektowi nazwę [pam-02] i określamy jego folder
- w [3], nowy projekt [pam-02]
Aby „podłączyć” rzeczywistą warstwę [metier] do warstwy internetowej, którą stworzyliśmy, należy wykonać trzy czynności:
- usunąć symulowaną warstwę [metier], którą wcześniej utworzyliśmy
- skonfigurować Spring tak, aby instancjonował rzeczywistą warstwę [metier] znajdującą się w archiwum [pam-spring-metier-dao-jpa-hibernate.jar].
- dodać do projektu wszystkie niezbędne archiwa (Spring, Hibernate, JPA, sterownik JDBC z archiwum MySQL).
Plik konfiguracyjny Springa [WEB-INF/applicationContext.xml] przyjmuje następującą postać:
<?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">
<!-- warstwy aplikacyjne -->
<!-- sieć -->
<bean id="config" class="web.Config" init-method="init">
<property name="metier" ref="metier"/>
</bean>
<!-- biznesowe -->
<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" />
<!-- konfiguracja 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>
<!-- źródło danych 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>
<!-- menedżer transakcji -->
<tx:annotation-driven transaction-manager="txManager" />
<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<!-- przetwarzanie wyjątków -->
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
<!-- trwałość -->
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
</beans>
Wiersze 36–41 konfigurują dostęp do bazy danych.
Dodawanie nowych bibliotek (Spring, Hibernate, JPA, sterownik JDBC z pakietu MySQL) odbywa się z folderu [lib] [2]. Należy pobrać cały folder. Znajduje się w nim kilkadziesiąt plików .jar, które należy dodać do [1]:
![]() |
Stworzenie tej biblioteki było dość trudne, ponieważ te frameworki czasami korzystają z tych samych archiwów. Należy zatem usunąć duplikaty. Pliki te zostały zebrane w folderze [lib] [2] w archiwum przykładów do niniejszego dokumentu, aby czytelnik nie musiał samodzielnie odtwarzać tej biblioteki.
To wszystko. Nowa aplikacja [pam-02] będzie odtąd współpracować z SGBD. Oto zrzut ekranu przedstawiający obliczenie wynagrodzenia:
![]() |
Tym razem obliczone wynagrodzenie jest rzeczywistym wynagrodzeniem, a nie fikcyjnym wynagrodzeniem z wersji 1. Zachęcamy czytelnika do przetestowania nowej aplikacji.



