Интеграция Struts 2 Hibernate с «Полным плагином Hibernate»

Интеграция Struts 2 + Hibernate с «Плагином Full Hibernate»

В последнем примереStruts 2 + Hibernate integration он использует прослушиватель контекста сервлета, чтобы поиграть с сеансом Hibernate, и очень хорошо справился с интеграцией Struts2 с фреймворком Hibernate.

Но всегда есть что улучшить :) В этом руководстве мы покажем вам, как интегрировать Struts2 и Hibernate с помощью плагина Struts2 под названием «http://code.google.com/p/full-hibernate-plugin-for- struts2 / [Плагин Full Hibernate] “, версия 2.2GA, созданныйjyoshiriro.

Смотрите сводку шагов интеграции:

  1. Поместите банку «Full Hibernate Plugin» в путь класса проекта.

  2. Используйте аннотации «@SessionTarget» для внедрения сеанса Hibernate; Пока «@TransactionTarget» для ввода транзакции гибернации.

  3. Вstruts.xml сделайте так, чтобы пакет расширял «hibernate-default» вместо стека по умолчанию.

Смотрите отношения:

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

Note
Это руководство представляет собой обновленную версию из предыдущего примераStruts 2 + Hibernate integration (прослушиватель контекста сервлета). Таким образом, конфигурации JSP и Hibernate почти одинаковы, только часть интеграции немного отличается, попробуйте сравнить оба, чтобы определить разные.

1. Структура проекта

Смотрите эту полную структуру папок проекта.

Struts 2 Hibernate plugin folder 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. Получите «Полный плагин гибернации» и зависимости

Получите все библиотеки зависимостей Struts2, Hibernate, «Full Hibernate Plugin» и MySQL. Поскольку «Full Hibernate Plugin» не поддерживает Maven, вам необходимо загрузить его с официального сайта и вручную включить в локальный репозиторий Maven.

  1. Загрузите «http://code.google.com/p/full-hibernate-plugin-for-struts2/[Full Hibernate Plugin]».

  2. Поместите загруженный jar в диск c: и используйте следующую команду Maven, чтобы включить его в локальный репозиторий 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. Свяжите это с последующей координатой Maven.

            
            com.google.code
            struts2-fullhibernatecore-plugin
            2.2
        

Вот все библиотеки зависимостей в этом руководстве:

Файл: 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
    
    
//...

«Full Hibernate Plugin» требует зависимостиHibernate validator иSLF4j, что на самом деле не имеет смысла, поскольку большинство разработчиков Java все еще не используют его.

4. Спящий материал

Все модели 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.cfg.xml, файл конфигурации базы данных Hibernate.




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

5. DAO

Реализует шаблон проектирования DAO для выполнения операций с базой данных. В классеCustomerDAOImpl объявлены как сеанс Hibernate, так и транзакция как члены класса. Во время инициализации проекта Struts 2 «Full Hibernate Plugin» внедрит соответствующий сеанс Hibernate и транзакцию в члены класса, используя аннотации@SessionTarget и@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 вызовите класс DAO для выполнения операции с базой данных.

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

Страницы JSP, чтобы добавить и перечислить клиента.

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

Link it all ~ make package расширяет «hibernate-default» вместо «struts-default».





  

  

    
       pages/customer.jsp
    

    
        pages/customer.jsp
    


Скачать исходный код

Related