Struts 2 + Hibernate-Integration mit "Full Hibernate Plugin"

Integration von Struts 2 + Hibernate mit dem "Full Hibernate Plugin"

Im Beispiel vonStruts 2 + Hibernate integrationwurde der Servlet-Kontext-Listener verwendet, um mit der Hibernate-Sitzung herumzuspielen, und es war sehr gut, Struts2 in das Hibernate-Framework zu integrieren.

Aber es gibt immer etwas zu verbessern :) In diesem Tutorial zeigen wir Ihnen, wie Sie Struts2 und Hibernate mithilfe eines Struts2-Plugins mit dem Namen „http://code.google.com/p/full-hibernate-plugin-for-“ integrieren. struts2 / [Full Hibernate Plugin] “, Version 2.2GA, erstellt vonjyoshiriro.

Siehe die Zusammenfassung der Integrationsschritte:

  1. Fügen Sie das Glas "Full Hibernate Plugin" in den Pfad der Projektklasse ein.

  2. Verwenden Sie die Anmerkungen "@SessionTarget", um die Hibernate-Sitzung einzufügen. Während "@TransactionTarget", um die Hibernate-Transaktion zu injizieren.

  3. Stellen Sie instruts.xml sicher, dass das Paket "hibernate-default" anstelle des Standardstapels erweitert.

Siehe die Beziehung:

Struts 2 <-- (Full Hibernate Plugin) ---> Hibernate <-----> Database

Note
Dieses Tutorial ist eine Update-Version aus dem vorherigen Beispiel vonStruts 2 + Hibernate integration(Servlet-Kontext-Listener). Die JSP- und Hibernate-Konfiguration sind also fast identisch, nur der Integrationsteil ist etwas anders. versuchen Sie beide zu vergleichen, um die Unterschiede zu erkennen.

1. Projektstruktur

Diese vollständige Projektordnerstruktur anzeigen.

Struts 2 Hibernate plugin folder 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. Holen Sie sich "Full Hibernate Plugin" und Abhängigkeiten

Holen Sie sich alle Struts2-, Hibernate-, "Full Hibernate Plugin" - und MySQL-Abhängigkeitsbibliotheken. Da "Full Hibernate Plugin" Maven nicht unterstützt, müssen Sie es von der offiziellen Website herunterladen und manuell in Ihr lokales Maven-Repository aufnehmen.

  1. Laden Sie „http://code.google.com/p/full-hibernate-plugin-for-struts2/[Full Hibernate Plugin]“ herunter.

  2. Legen Sie die heruntergeladene JAR-Datei in Laufwerk c: und verwenden Sie den folgenden Maven-Befehl, um sie in das lokale Maven-Repository aufzunehmen.

    mvn install:install-file -Dfile=c:\struts2-fullhibernatecore-plugin-2.2-GA.jar
    -DgroupId=com.google.code -DartifactId=struts2-fullhibernatecore-plugin
    -Dversion=2.2 -Dpackaging=jar
  3. Verknüpfen Sie es mit der Follow-Maven-Koordinate.

            
            com.google.code
            struts2-fullhibernatecore-plugin
            2.2
        

Hier sind alle Abhängigkeitsbibliotheken in diesem Lernprogramm aufgeführt:

Datei: pom.xml

//...
    
    
            org.apache.struts
        struts2-core
        2.1.8
        

    
    
        mysql
        mysql-connector-java
        5.1.9
    

    
    
        com.google.code
        struts2-fullhibernatecore-plugin
        2.2
    

    
    
                log4j
            log4j
            1.2.9
        

    
    
               org.hibernate
           hibernate-validator
           3.1.0.GA
        

    
    
               org.slf4j
           slf4j-api
           1.6.1
        

    
    
        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
    
    
//...

Das "Full Hibernate Plugin" erfordert die Abhängigkeit vonHibernate validator undSLF4j, was nicht wirklich sinnvoll ist, da die meisten Java-Entwickler es immer noch nicht verwenden.

4. Hibernate Stuff

Alle Hibernate-Modelle und Konfigurationsmaterialien.

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.





    
        
            
            
        
        
            
        
        
            
        
        
            
        
    

Datei: hibernate.cfg.xml, Konfigurationsdatei der Hibernate-Datenbank.




  
    false
    password
    jdbc:mysql://localhost:3306/example
    root
    org.hibernate.dialect.MySQLDialect
    true
    true
    false
    
  

5. DAO

Implementiert das DAO-Entwurfsmuster, um die Datenbankoperation auszuführen. In der KlasseCustomerDAOImpl wurden sowohl die Sitzung im Ruhezustand als auch die Transaktion als Klassenmitglieder deklariert. Während der Struts 2-Projektinitialisierung injiziert "Full Hibernate Plugin" die entsprechende Hibernate-Sitzung und -Transaktion unter Verwendung der Annotation@SessionTarget bzw.@TransactionTarget in die Klassenmitglieder.

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.hibernate.Session;
import org.hibernate.Transaction;

import com.googlecode.s2hibernate.struts2.plugin.annotations.SessionTarget;
import com.googlecode.s2hibernate.struts2.plugin.annotations.TransactionTarget;
import com.example.customer.dao.CustomerDAO;
import com.example.customer.model.Customer;

public class CustomerDAOImpl implements CustomerDAO{

    @SessionTarget
    Session session;

    @TransactionTarget
    Transaction transaction;

    //add the customer
    public void addCustomer(Customer customer){

        session.save(customer);

    }

    //return all the customers in list
    public List listCustomer(){

        return session.createQuery("from Customer").list();

    }

}

6. Aktion

Rufen Sie in Action class die DAO-Klasse auf, um den Datenbankvorgang auszuführen.

CustomerAction.java

package com.example.customer.action;

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

import com.example.customer.dao.CustomerDAO;
import com.example.customer.dao.impl.CustomerDAOImpl;
import com.example.customer.model.Customer;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class CustomerAction extends ActionSupport
    implements ModelDriven{

    Customer customer = new Customer();
    List customerList = new ArrayList();
    CustomerDAO customerDAO = new CustomerDAOImpl();

    public String execute() throws Exception {
        return SUCCESS;
    }

    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());
        customerDAO.addCustomer(customer);

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

        return SUCCESS;

    }

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

        customerList = customerDAO.listCustomer();

        return SUCCESS;

    }

}

7. JSP-Seite

JSP-Seiten zum Hinzufügen und Auflisten des Kunden.

customer.jsp

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





Struts 2 Full Hibernate Plugin example

Add Customer

All Customers

Customer Id Name Address Created Date


8. struts.xml

Alles verknüpfen ~ make package erweitert die "hibernate-default" anstelle der "struts-default".





  

  

    
       pages/customer.jsp
    

    
        pages/customer.jsp
    


Quellcode herunterladen

Laden Sie es herunter -Struts2-Hibernate-FullHibernatePluginExample.zip (12 KB)