Struts 2 + Spring + Hibernate-Integrationsbeispiel

Beispiel für die Integration von Struts 2 + Spring + Hibernate

Laden Sie es herunter -Struts2-Spring-Hibernate-Integration-Example.zip

In diesem Tutorial wird die Integration zwischen „Struts2 + Spring + Hibernate“ gezeigt. Überprüfen Sie die folgenden Tutorials, bevor Sie fortfahren.

Siehe die Zusammenfassung der Integrationsschritte:

  1. Holen Sie sich alle Abhängigkeitsbibliotheken (viel).

  2. Registrieren Sie dieContextLoaderListenervon Spring, um Struts 2 und Spring zu integrieren.

  3. Verwenden Sie dieLocalSessionFactoryBeanvon Spring, um Spring und Hibernate zu integrieren.

  4. Fertig, alles verbunden.

Siehe die Beziehung:

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

Dies ist ein sehr langes Tutorial mit wenigen Erklärungen. Lesen Sie die obigen 3 Artikel, um detaillierte Erklärungen zu erhalten.

Tutorials Start…

Es wird eine Kundenseite mit der Funktion "Kunden hinzufügen" und "Kundenliste" erstellt. Das Front-End verwendetStruts 2 zum Anzeigen,Spring als Abhängigkeitsinjektions-Engine undHibernate zum Ausführen der Datenbankoperation. Komm wir starten…

1. Projektstruktur

Projektordnerstruktur.

Struts2 Spring Hibernate Project Structure

Struts2 Spring Hibernate Project Structure

2. MySQL-Tabellenskript

Kundentabellenskript

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

In diesen Lernprogrammen werden viele Abhängigkeitsbibliotheken angefordert.

Streben 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
    

Frühling…

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

Überwintern…

    
    
        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. Überwintern…

Nur die Modell- und Zuordnungsdateien sind erforderlich, da Spring die Ruhezustandskonfiguration übernimmt.

Customer.java - Erstellen Sie eine Klasse für die Kundentabelle.

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 - Zuordnungsdatei für den Kunden im Ruhezustand.




    
        
            
            
        
        
            
        
        
            
        
        
            
        
    

5. Streben 2…

Implementiert das Bo- und DAO-Entwurfsmuster. Alle Bo und DAO werden von Spring in der Spring-Bean-Konfigurationsdatei DI sein. Erweitern Sie im DAO dieHibernateDaoSupportvon Spring, um die Integration von Spring und Hibernate zu integrieren.

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 - Die Struts2-Aktion muss dieActionSupport nicht mehr verlängern, Spring wird sie verarbeiten.

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. Frühling…

Fast die gesamte Konfiguration erfolgt hier, Spring hat sich auf Integrationsarbeiten spezialisiert :).

CustomerBean.xml - Deklarieren Sie die Bohnen des Frühlings: Action, BO und DAO.



    
        
    

    
        
    

    
        
    

database.properties - Deklarieren Sie die Datenbankdetails.

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

DataSource.xml - Erstellen Sie eine Datenquellen-Bean.



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


  
    
    
    
    
  

HibernateSessionFactory.xml - Erstellen Sie einesessionFactory-Bean, um Spring und Hibernate zu integrieren.






    
      
    

    
       
         org.hibernate.dialect.MySQLDialect
         true
       
    

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


SpringBeans.xml - Erstellen Sie eine zentrale Bean-Bean-Konfigurationsdatei und fungieren Sie als zentrale Bean-Verwaltung.



    
    
    

    
    

7. JSP-Seite

JSP-Seite zum Anzeigen des Elements mit Struts 2-Tags.

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

Verknüpfe alles ~




    

    

        
            pages/customer.jsp
        

        
            pages/customer.jsp
        

    

9. Streben 2 + Feder

Um Struts 2 und Spring zu integrieren, registrieren Sie einfach die Listener-KlasseContextLoaderListener und definieren Sie einen Parameter "contextConfigLocation", um den Spring-Container aufzufordern, die "SpringBeans.xml" anstelle der Standard-applicationContext.xmlzu analysieren ) 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