Intégration de Struts 2 Hibernate avec «Full Hibernate Plugin»

Intégration de Struts 2 + Hibernate avec «Full Hibernate Plugin»

Dans le dernier exemple deStruts 2 + Hibernate integration, il utilise l'écouteur de contexte de servlet pour jouer avec la session Hibernate, et il a très bien intégré Struts2 avec le framework Hibernate.

Mais, il y a toujours quelque chose à améliorer :) Dans ce tutoriel, nous vous montrons comment intégrer Struts2 et Hibernate en utilisant un plugin Struts2 nommé "http://code.google.com/p/full-hibernate-plugin-for- struts2 / [Full Hibernate Plugin] «, version 2.2GA, créé parjyoshiriro.

Voir le résumé des étapes d'intégration:

  1. Placez le fichier jar «Full Hibernate Plugin» dans le chemin de classe du projet.

  2. Utilisez les annotations «@SessionTarget» pour injecter la session Hibernate; Alors que «@TransactionTarget» pour injecter la transaction Hibernate.

  3. Dansstruts.xml, faites en sorte que le package étende «hibernate-default», au lieu de la pile par défaut.

Voir la relation:

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

Note
Ce tutoriel est une version de mise à jour de l'exemple précédent deStruts 2 + Hibernate integration (écouteur de contexte de servlet), donc la configuration JSP et Hibernate sont presque les mêmes, juste la partie intégration est un peu différente, essayez de comparer les deux pour repérer les différents.

1. Structure du projet

Voir cette structure de dossier de projet complète.

Struts 2 Hibernate plugin folder structure

2. Script de table MySQL

Script de table du client.

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. Obtenez «Plugin Hibernate complet» et dépendances

Obtenez toutes les bibliothèques de dépendances Struts2, Hibernate, «Full Hibernate Plugin» et MySQL. Puisque le «Full Hibernate Plugin» ne prend pas en charge Maven, vous devez le télécharger à partir du site officiel et l'inclure manuellement dans votre référentiel local Maven.

  1. Téléchargez "http://code.google.com/p/full-hibernate-plugin-for-struts2/[Full Hibernate Plugin]".

  2. Placez le fichier jar téléchargé dans le lecteur c: et utilisez la commande Maven suivante pour l'inclure dans le référentiel local Maven.

    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. Reliez-le avec les coordonnées Maven suivantes.

            
            com.google.code
            struts2-fullhibernatecore-plugin
            2.2
        

Voici toutes les bibliothèques de dépendances de ce didacticiel:

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

Le «Full Hibernate Plugin» est requis les dépendancesHibernate validator etSLF4j, ce qui n'a pas vraiment de sens, car la plupart des développeurs Java ne l'utilisent toujours pas.

4. Hibernate Stuff

Tous les modèles Hibernate et les éléments de configuration.

Customer.java - Crée une classe pour la table client.

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 - Fichier de mappage Hibernate pour le client.




    
        
            
            
        
        
            
        
        
            
        
        
            
        
    

Fichier: hibernate.cfg.xml, fichier de configuration de la base de données Hibernate.



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

5. DAO

Implémente le modèle de conception DAO pour effectuer l'opération de base de données. Dans la classeCustomerDAOImpl, a déclaré la session et la transaction Hibernate comme membres de la classe. Pendant l'initialisation du projet Struts 2, «Full Hibernate Plugin» injectera la session et la transaction Hibernate correspondantes dans les membres de la classe en utilisant respectivement les annotations@SessionTarget et@TransactionTarget.

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

Dans la classe Action, appelez la classe DAO pour effectuer l'opération de base de données.

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. Page JSP

Pages JSP pour ajouter et lister le client.

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

Liez tout ~ make package étend les «hibernate-default» au lieu des «struts-default».




  

  

    
       pages/customer.jsp
    

    
        pages/customer.jsp
    


Télécharger le code source