0% found this document useful (0 votes)
103 views

Struts + Hibernate Integration Example

This document provides steps to integrate Hibernate with a Struts 1.x web application. It involves creating a Hibernate plugin that stores the Hibernate session factory in the servlet context. The plugin is included in struts-config.xml. Struts actions can then get the session factory from the servlet context to perform Hibernate tasks like saving objects to the database.

Uploaded by

Deepak
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
103 views

Struts + Hibernate Integration Example

This document provides steps to integrate Hibernate with a Struts 1.x web application. It involves creating a Hibernate plugin that stores the Hibernate session factory in the servlet context. The plugin is included in struts-config.xml. Struts actions can then get the session factory from the servlet context to perform Hibernate tasks like saving objects to the database.

Uploaded by

Deepak
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 3

Struts + Hibernate integration example

A tutorial to show how to integrate Hibernate with in a web application developed with
Apache Struts 1.x.

Download It – Struts-Hibernate-Example.zip

Steps of the integration :

1. Create a new Hibernate Struts plug-in file to set the Hibernate session factory in
servlet context, and include this file in struts-config.xml file.
2. In Struts, get the Hibernate session factory from servlet context, and do
whatever Hibernate task you want.

1. Hibernate Struts Plug-in

Create a Hibernate Struts Plug-in, get the Hibernate session factory, store it into the
servlet context for later user – servlet.getServletContext().setAttribute(KEY_NAME,
factory);.

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. struts-config.xml

Include the Hibernate Struts plug-in into the Struts configuration file (struts-
config.xml).

<struts-config>
...
<plug-in className="com.mkyong.common.plugin.HibernatePlugin">
<set-property property="path" value="/hibernate.cfg.xml"/>
</plug-in>
...
<struts-config>

3. Get the Hibernate session factory

In Struts action class, you can get the Hibernate session factory from servlet context.

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

and do whatever Hibernate task as normal.

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");
 
}
}

Done.

You might also like