Рубрики
Без рубрики

Пример интеграции Struts + гибернация

– Стойки + Пример интеграции в спящий режим

Учебное пособие, показывающее, как интегрировать Hibernate с веб-приложением, разработанным с помощью Apache Struts 1.x.

Этапы интеграции:

  1. Создайте новый Плагин Hibernate Struts файл, чтобы установить Hibernate sessionfactory в контексте сервлета, и включите этот файл в struts-config.xml файл.
  2. В Struts получите Hibernate sessionfactory из servletcontext и выполните любую задачу гибернации, которую вы хотите.

1. Подключаемый модуль Hibernate Struts для гибернации

Создайте подключаемый модуль Hibernate Struts, получите фабрику сеансов Hibernate, сохраните ее в контексте сервлета для последующего пользователя – servlet.getservletcontext().setAttribute(ИМЯ КЛЮЧА, фабрика); .

package com.mkyong.common.plugin;

import java.net.URL;
import javax.servlet.ServletException;

import org.apache.struts.action.ActionServlet;
import org.apache.struts.action.PlugIn;
import org.apache.struts.config.ModuleConfig;
import org.hibernate.HibernateException;
import org.hibernate.MappingException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernatePlugin implements PlugIn {
   private Configuration config;
   private SessionFactory factory;
   private String path = "/hibernate.cfg.xml";
   private static Class clazz = HibernatePlugin.class;

   public static final String KEY_NAME = clazz.getName();

   public void setPath(String path) {
      this.path = path;
   }

   public void init(ActionServlet servlet, ModuleConfig modConfig)
      throws ServletException {

      try {
    	  
    	 //save the Hibernate session factory into serlvet context
         URL url = HibernatePlugin.class.getResource(path);
         config = new Configuration().configure(url);
         factory = config.buildSessionFactory();
         servlet.getServletContext().setAttribute(KEY_NAME, factory);

      } catch (MappingException e) {
         throw new ServletException();
      } catch (HibernateException e) {
         throw new ServletException();
      }

   }

   public void destroy() {
      try {
         factory.close();
      } catch (HibernateException e) {
         e.printStackTrace();
      }
   }
}

2. Создайте подключаемый модуль Hibernate Struts, получите фабрику сеансов Hibernate, сохраните ее в контексте сервлета для последующего пользователя – ||servlet.getservletcontext().setAttribute(ИМЯ КЛЮЧА, фабрика);||.

Включите плагин Hibernate Struts в файл конфигурации Struts ( struts-config.xml ).


    ...
    
      	
    
	...

3. Получить фабрику сеансов гибернации

В классе действий Struts вы можете получить Фабрику сеансов гибернации из servletcontext .

servlet.getServletContext().getAttribute(HibernatePlugin.KEY_NAME);

и выполняйте любую задачу гибернации как обычно.

package com.mkyong.customer.action;
 
import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.commons.beanutils.BeanUtils;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import com.mkyong.common.plugin.HibernatePlugin;
import com.mkyong.customer.form.CustomerForm;
import com.mkyong.customer.model.Customer;
 
public class AddCustomerAction extends Action{
 
  public ActionForward execute(ActionMapping mapping,ActionForm form,
	HttpServletRequest request,HttpServletResponse response) 
  throws Exception {
 
        SessionFactory sessionFactory = 
	         (SessionFactory) servlet.getServletContext()
                            .getAttribute(HibernatePlugin.KEY_NAME);

	Session session = sessionFactory.openSession();
		
	CustomerForm customerForm = (CustomerForm)form;
	Customer customer = new Customer();
		
	//copy customerform to model
	BeanUtils.copyProperties(customer, customerForm);
		
	//save it
	customer.setCreatedDate(new Date());
		
	session.beginTransaction();
	session.save(customer);
	session.getTransaction().commit();
		
	return mapping.findForward("success");
	  
  }
}

Сделано.

Оригинал: “https://mkyong.com/struts/struts-hibernate-integration-example/”