20. Vaka Çalışması – Sürüm 2
Şimdi uygulamamızın son sürümünü sunuyoruz:
![]() |
Yeni NetBeans projesi [pam-02], [pam-01] projesinin kopyalanmasıyla elde edilir:
![]() |
- [1]'e kopyalandıktan sonra, yeni proje
- [2]'e kopyalanır, yeni projeye [pam-02] adı verilir ve klasörü
- [3]'te, yeni proje [pam-02]
Gerçek [metier] katmanını oluşturduğumuz web katmanına "bağlamak" için üç şey yapmamız gerekiyor:
- daha önce oluşturduğumuz simüle edilmiş [metier] katmanını silmek
- Spring'i, [pam-spring-metier-dao-jpa-hibernate.jar] arşivinde bulunan gerçek [metier] katmanını başlatacak şekilde yapılandırmak.
- Projeye gerekli tüm arşivleri eklemek (Spring, Hibernate, JPA, MySQL'in JDBC sürücüsü).
Spring yapılandırma dosyası [WEB-INF/applicationContext.xml] şu şekilde olur:
<?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">
<!-- uygulama katmanları -->
<!-- web -->
<bean id="config" class="web.Config" init-method="init">
<property name="metier" ref="metier"/>
</bean>
<!-- iş -->
<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" />
<!-- yapılandırma 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>
<!-- veri kaynağı 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>
<!-- işlem yöneticisi -->
<tx:annotation-driven transaction-manager="txManager" />
<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<!-- istisna çevirisi -->
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
<!-- kalıcılık -->
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
</beans>
36-41. satırlar, veritabanına erişimi yapılandırır.
Yeni kütüphanelerin (Spring, Hibernate, JPA, MySQL JDBC sürücüsü) eklenmesi, [lib] ve [2] klasörlerinden gerçekleştirilir. Klasörün tamamı alınır. Eklenecek onlarca .jar dosyası vardır ([1]):
![]() |
Bu kütüphaneyi oluşturmak oldukça zordu çünkü bu çerçeveler bazen aynı arşivleri kullanıyor. Bu durumda yinelenenleri silmek gerekiyor. Bu dosyalar, okuyucunun bu kütüphaneyi kendisi yeniden oluşturmak zorunda kalmaması için bu belgenin örnek arşivindeki [lib] ve [2] klasörlerinde bir araya getirildi.
Hepsi bu kadar. Yeni [pam-02] uygulaması artık SGBD ile birlikte çalışacaktır. İşte bir maaş hesaplamasının ekran görüntüsü:
![]() |
Bu sefer hesaplanan maaş, sürüm 1'deki hayali maaş değil, gerçek maaştır. Okuyucunun yeni uygulamayı denemesi önerilir.



