Skip to content

20. مطالعه موردی – نسخه ۲

اکنون نسخه نهایی اپلیکیشن خود را ارائه می‌دهیم:

پروژه جدید NetBeans به نام [pam-02] با کلون کردن پروژه [pam-01] ایجاد شده است:

  • در [1]، پروژه جدید را کپی می‌کنیم
  • به [2]؛ پروژه جدید [pam-02] نام‌گذاری شده و پوشه آن مشخص شده است
  • در [3]، پروژه جدید [pam-02]

برای «لینک» کردن لایهٔ واقعی [metier] به لایهٔ وبی که ساخته‌ایم، سه مرحله لازم است:

  1. لایه شبیه‌سازی‌شده [metier] را که ایجاد کرده بودیم، حذف کنید
  2. پیکربندی Spring برای ایجاد نمونه از لایه واقعی [metier] که در آرشیو [pam-spring-metier-dao-jpa-hibernate.jar] قرار دارد.
  3. تمام آرشیوهای لازم را به پروژه اضافه کنید (Spring، Hibernate، JPA و درایور JDBC MySQL).

فایل پیکربندی Spring [WEB-INF/applicationContext.xml] به صورت زیر درمی‌آید:


<?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">
  
  <!-- لایه‌های کاربردی -->
 
<!-- وب -->
  <bean id="config" class="web.Config" init-method="init">
    <property name="metier" ref="metier"/>
  </bean>
  <!-- کسب‌وکار -->
  <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" />
  
  <!-- پیکربندی 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>
  
  <!--منبع داده 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>
  
  <!-- مدیر تراکنش -->
  <tx:annotation-driven transaction-manager="txManager" />
  <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
  </bean>
  
  <!-- مدیریت استثنا -->
  <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
  
  <!-- پایداری -->
  <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
  
</beans>

خطوط ۳۶–۴۱ دسترسی به پایگاه داده را پیکربندی می‌کنند.

کتابخانه‌های جدید (Spring، Hibernate، JPA، MySQL JDBC driver) از پوشه‌های [lib] و [2] اضافه شده‌اند. کل پوشه کپی می‌شود. چندین ده‌ها فایل .jar باید به [1] اضافه شوند:

کامپایل کردن این کتابخانه بسیار دشوار بود زیرا این فریم‌ورک‌ها گاهی از همان آرشیوها استفاده می‌کنند. بنابراین فایل‌های تکراری باید حذف شوند. این فایل‌ها در پوشه [lib] [2] در آرشیو مثال‌های این سند گردآوری شده‌اند تا خواننده مجبور نباشد این کتابخانه را شخصاً دوباره بسازد.

همین. اپلیکیشن جدید [pam-02] اکنون با SGBD کار خواهد کرد. در اینجا یک اسکرین‌شات از محاسبه حقوق آورده شده است:

 

این بار، حقوق محاسبه شده، حقوق واقعی است، نه حقوق فرضی نسخه ۱. از خوانندگان دعوت می‌شود تا برنامه جدید را آزمایش کنند.