Struts 2 + Spring + Hibernate統合の例

Struts 2 + Spring + Hibernate統合の例

ダウンロード–Struts2-Spring-Hibernate-Integration-Example.zip

このチュートリアルでは、「Struts2 + Spring + Hibernate」間の統合を示します。 続行する前に、次のチュートリアルを確認してください。

統合手順の概要を参照してください。

  1. すべての依存ライブラリ(多く)を取得します。

  2. SpringのContextLoaderListenerを登録して、Struts2とSpringを統合します。

  3. SpringのLocalSessionFactoryBeanを使用して、SpringとHibernateを統合します。

  4. 完了、すべて接続済み。

関係を参照してください。

Struts 2 <-- (ContextLoaderListener) --> Spring <-- (LocalSessionFactoryBean) --> Hibernate

これは、ほとんど説明のない非常に長いチュートリアルになります。詳細な説明については、上記の3つの記事を確認してください。

チュートリアル開始…

顧客の追加と顧客のリスト機能を備えた顧客ページを作成します。 フロントエンドはStruts 2を使用して表示し、Springを依存性注入エンジンとして使用し、Hibernateを使用してデータベース操作を実行しています。 始めましょう…

1. プロジェクト構造

プロジェクトのフォルダー構造。

Struts2 Spring Hibernate Project Structure

Struts2 Spring Hibernate Project Structure

2. MySQLテーブルスクリプト

顧客のテーブルスクリプト。

DROP TABLE IF EXISTS `example`.`customer`;
CREATE TABLE  `example`.`customer` (
  `CUSTOMER_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `NAME` varchar(45) NOT NULL,
  `ADDRESS` varchar(255) NOT NULL,
  `CREATED_DATE` datetime NOT NULL,
  PRIMARY KEY (`CUSTOMER_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;

3.Dependency libraries

このチュートリアルでは、多くの依存ライブラリを要求します。

Struts 2…

        
        
        org.apache.struts
        struts2-core
        2.1.8
        
    
    
            org.apache.struts
        struts2-spring-plugin
        2.1.8
        

MySQL…

        
    
        mysql
        mysql-connector-java
        5.1.9
    

春…

    
    
        org.springframework
        spring
        2.5.6
    
    
        org.springframework
        spring-web
        2.5.6
    

休止状態…

    
    
        org.hibernate
        hibernate
        3.2.7.ga
    

    
    
        dom4j
        dom4j
        1.6.1
    

    
        commons-logging
        commons-logging
        1.1.1
    

    
        commons-collections
        commons-collections
        3.2.1
    

    
        cglib
        cglib
        2.2
    
    

    
    
        antlr
        antlr
        2.7.7
    
    

4. 休止状態…

SpringはHibernate構成を処理するため、モデルとマッピングファイルのみが必要です。

Customer.java –顧客テーブルのクラスを作成します。

package com.example.customer.model;

import java.util.Date;

public class Customer implements java.io.Serializable {

    private Long customerId;
    private String name;
    private String address;
    private Date createdDate;

    //getter and setter methods
}

Customer.hbm.xml –顧客用のHibernateマッピングファイル。




    
        
            
            
        
        
            
        
        
            
        
        
            
        
    

5. Struts 2…

BoおよびDAOデザインパターンを実装します。 すべてのBoおよびDAOは、Spring Bean構成ファイルでSpringによってDIになります。 DAOで、SpringのHibernateDaoSupportを拡張して、SpringとHibernateの統合を統合します。

CustomerBo.java

package com.example.customer.bo;

import java.util.List;
import com.example.customer.model.Customer;

public interface CustomerBo{

    void addCustomer(Customer customer);
    List listCustomer();

}

CustomerBoImpl.java

package com.example.customer.bo.impl;

import java.util.List;
import com.example.customer.bo.CustomerBo;
import com.example.customer.dao.CustomerDAO;
import com.example.customer.model.Customer;

public class CustomerBoImpl implements CustomerBo{

    CustomerDAO customerDAO;
    //DI via Spring
    public void setCustomerDAO(CustomerDAO customerDAO) {
        this.customerDAO = customerDAO;
    }

    //call DAO to save customer
    public void addCustomer(Customer customer){
        customerDAO.addCustomer(customer);
    }

    //call DAO to return customers
    public List listCustomer(){
        return customerDAO.listCustomer();
    }
}

CustomerDAO.java

package com.example.customer.dao;

import java.util.List;
import com.example.customer.model.Customer;

public interface CustomerDAO{

    void addCustomer(Customer customer);
    List listCustomer();

}

CustomerDAOImpl.java

package com.example.customer.dao.impl;

import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.example.customer.dao.CustomerDAO;
import com.example.customer.model.Customer;

public class CustomerDAOImpl extends HibernateDaoSupport
    implements CustomerDAO{

    //add the customer
    public void addCustomer(Customer customer){
        getHibernateTemplate().save(customer);
    }

    //return all the customers in list
    public List listCustomer(){
        return getHibernateTemplate().find("from Customer");
    }

}

CustomerAction.java – Struts2アクションはActionSupportを拡張する必要がなくなり、Springがそれを処理します。

package com.example.customer.action;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.example.customer.bo.CustomerBo;
import com.example.customer.model.Customer;
import com.opensymphony.xwork2.ModelDriven;

public class CustomerAction implements ModelDriven{

    Customer customer = new Customer();
    List customerList = new ArrayList();

    CustomerBo customerBo;
    //DI via Spring
    public void setCustomerBo(CustomerBo customerBo) {
        this.customerBo = customerBo;
    }

    public Object getModel() {
        return customer;
    }

    public List getCustomerList() {
        return customerList;
    }

    public void setCustomerList(List customerList) {
        this.customerList = customerList;
    }

    //save customer
    public String addCustomer() throws Exception{

        //save it
        customer.setCreatedDate(new Date());
        customerBo.addCustomer(customer);

        //reload the customer list
        customerList = null;
        customerList = customerBo.listCustomer();

        return "success";

    }

    //list all customers
    public String listCustomer() throws Exception{

        customerList = customerBo.listCustomer();

        return "success";

    }

}

6. 春…

ほとんどすべての設定はここで行われますが、Springは統合作業に特化しています:)。

CustomerBean.xml – SpringのBeanを宣言します:アクション、BO、およびDAO。



    
        
    

    
        
    

    
        
    

database.properties –データベースの詳細を宣言します。

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/example
jdbc.username=root
jdbc.password=password

DataSource.xml –データソースBeanを作成します。



 
   
     WEB-INF/classes/config/database/properties/database.properties
   


  
    
    
    
    
  

HibernateSessionFactory.xml – SpringとHibernateを統合するためのsessionFactoryBeanを作成します。






    
      
    

    
       
         org.hibernate.dialect.MySQLDialect
         true
       
    

    
        
          com/example/customer/hibernate/Customer.hbm.xml
        
    


SpringBeans.xml –コアSpringのBean構成ファイルを作成し、中央のBean管理として機能します。



    
    
    

    
    

7. JSPページ

Struts 2タグを持つ要素を表示するJSPページ。

customer.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>





Struts 2 + Spring + Hibernate integration example

Add Customer

All Customers

Customer Id Name Address Created Date


8. struts.xml

それをすべてリンクしてください〜




    

    

        
            pages/customer.jsp
        

        
            pages/customer.jsp
        

    

9. Struts 2 +春

Struts 2とSpringを統合するには、ContextLoaderListenerリスナークラスを登録し、「contextConfigLocation」パラメーターを定義して、デフォルトの「%(t3」ではなく「SpringBeans.xml」を解析するようにSpringコンテナーに要求します。 )s "。

web.xml




  Struts 2 Web Application

  
    struts2
    
      org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    
  

  
    struts2
    /*
  

  
    contextConfigLocation
    /WEB-INF/classes/SpringBeans.xml
  

  
    
      org.springframework.web.context.ContextLoaderListener