Can view the tutorials best in Google Chrome, Mozilla Firefox, Opera, higher version of Internet Explorer

Struts 2 Hibernate Integration Example [ Struts 2 + Hibernate Integration]

Hibernate » On May 13, 2012 | { 34 Comments }

Let us see how to integrate struts 2 application with Hibernate, a real time application. Make sure you are well aware of the following topics before you read this article.

  • Static – Core
  • HQL – Hibernate
  • Taking separate bean to store the values – Struts

See HibernatePlug.java,  my aim is to make SessionFactory as singleton.  As a programmer its our responsibulity to make SessionFactory as singleton,  People used to say HibernatePlugin plugin plugin bla bla., but all it could be is to make SessionFactory as singleton, and remaining is just struts only :-)

Directory Structure

HibernatePlug.java

package java4s;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernatePlug{    

    private static SessionFactory factory = getSessionFactory();

    public static synchronized SessionFactory getSessionFactory()
    {
            try {                        

                                Configuration cfg = new Configuration();
                                cfg.configure("hibernate.cfg.xml"); 

                                SessionFactory sessionFactory = cfg.buildSessionFactory();
                                System.out.println(" ----------   Factory Object Created  ------------");
                                return sessionFactory;

                  }             catch (Throwable ex) {
                                 System.err.println("Initial SessionFactory creation failed." + ex);
                                 throw new ExceptionInInitializerError(ex);
                  }
      }

    public static SessionFactory getFactory() {
        return factory;
    }

}

index.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>
<META HTTP-EQUIV="Refresh" CONTENT="1;URL=verify.action">

retrive.jsp

<%@taglib uri="/struts-tags" prefix="s"%>
<%@ page import="java.util.*,java4s.Mybean" %>
<% Mybean b; %>

<head>
<link rel="stylesheet" type="text/css" href="css/java4s.css" />
<script type="text/javascript">
function deleteRecord()
    {
        document.fom.action="delete.action";
        document.fom.submit();
    }
function insertRecord()
{
    document.fom.action="insertLink.action";
    document.fom.submit();
}
function editr(val)
{
   document.fom.action="update.action?fid="+val;
   document.fom.submit();
}
</script>

</head>

<form method="post" name="fom">

<table>
<tr><td colspan="5">

<font face="verdana" size="2">
<input type="button" value="insert" onclick="insertRecord()"> <input type="button" value="delete" onclick="deleteRecord()"> <br><br>

</font>

</td></tr>

<tr>
<td><center>+</center></td>
<td><b>SNO</b></td>
<td><b>SName</b></td>
<td><b>Country</b></td>
<td><b> Ope.</b></td>
</tr>

<%
List l=(List)request.getAttribute("rec");
if(l!=null)
{
    Iterator it=l.iterator();

    while(it.hasNext())
    {
        b=(java4s.Mybean)it.next();

%>
        <tr>
        <td><input type="checkbox" value="<%= b.getNo() %>" name="rdel"></td>
        <td><%= b.getNo() %></td>
        <td><%= b.getNam() %></td>
        <td><%= b.getCt() %></td>
        <td><a href="javascript:editr('<%= b.getNo() %>')">Edit</a></td>
        </tr>

<%         

    }
}

%> 

</table>
</form>

insertScreen.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page import="java.util.*;" %>

<html>

<head>
<link rel="stylesheet" type="text/css" href="css/java4s.css" />

<script type="text/javascript">
function display()
    {
        document.fom.action="verify.action";
        document.fom.submit();
    }
</script>

</head>

<body>

    <s:form action="insert" name="fom">     

<table>
<tr>
<td colspan="2">

<input type="button" value="Display Records" onclick="display()"> 

</td></tr>

<tr><td>

            <s:textfield label="Number" name="b.no" cssClass="bord"/>
            <s:textfield label="Name" name="b.nam" cssClass="bord"/>
            <s:textfield label="Country" name="b.ct" cssClass="bord"/>

<s:submit value="Insert" />

</td>
</tr>
</table>    

</s:form>

</body>
</html>

successOperation.jsp

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

Executed successfully....!!!!!
<META HTTP-EQUIV="Refresh" CONTENT="1;URL=verify.action">

edit.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page import="java.util.*;" %>

<html>

<head>
<link rel="stylesheet" type="text/css" href="css/java4s.css" />

<script type="text/javascript">
function display()
    {
        document.fom.action="verify.action";
        document.fom.submit();
    }
</script>

</head>

<body>

<s:form action="updateRecInDB" method="post" name="fom">     

<table>
<tr>
<td colspan="2">

<input type="button" value="Display Records" onclick="display()"> 

</td></tr>

<tr><td>

            <s:textfield label="Number" value="%{#application.x}" readonly="true" name="b.no" cssClass="bord"/>
            <s:textfield label="Name" value="%{#application.y}" name="b.nam" cssClass="bord"/>
            <s:textfield label="Country" value="%{#application.z}" name="b.ct" cssClass="bord"/>

<s:submit value="Update" />

</td>
</tr>
</table>    

</s:form>

</body>
</html>

error.jsp

This is error page

Java4sController.java

package java4s;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.ServletRequestAware;

import com.opensymphony.xwork2.ActionSupport;
public class Java4sController extends ActionSupport implements ServletRequestAware,ApplicationAware{
    private static final long serialVersionUID = 1L;

    MyOperations ma = new MyOperations();
    private List<Mybean> recordsFromDB;
    Mybean b;

    public Mybean getB() {
        return b;
    }
    public void setB(Mybean b) {
        this.b = b;
    }

    //For RequestAware Interface
    HttpServletRequest request;
    public void setServletRequest(HttpServletRequest request) {
        this.request = request;
    }
    public HttpServletRequest getServletRequest() {
        return request;
    }    

    //For Bean, while selecting..
    public List<Mybean> getRecordsFromDB()
    {
          return this.recordsFromDB;
    }    

    // for ApplicationAware Interface
    Map m;
    public void setApplication(Map m)
    {
        this.m=m;
    }

    // *******     For select query  ********
    public String getRecords()
    {
        recordsFromDB = ma.retrieveRecords();
        request.setAttribute("rec", recordsFromDB);
        return SUCCESS;
    }

   //*********    For update query  ********
    public String getRecordToUpdate()
    {
        recordsFromDB = ma.retrieveRecord(request.getParameter("fid"));        

        Iterator<Mybean> it = recordsFromDB.iterator();
        while(it.hasNext())
        {
               Object o = it.next();
               b = (Mybean)o;
        }        

            m.put("x",b.getNo());
            m.put("y", b.getNam());
            m.put("z",b.getCt());

        return SUCCESS;
    }

    // ********     Insert method      *********
    public String insertRecord()
    {
        ma.insertRecord(b);
        return SUCCESS;
    }

    //**********    update in database  **********
    public String updateRec()
    {
        ma.upRecord(b);
        return SUCCESS;
    }

    public String deleteRecord()
    {
        String cv[] = null;
        cv=request.getParameterValues("rdel");
         ma.deleteRecord(cv);
        return SUCCESS;
    }

}

Links.java

package java4s;
public class Links{    

    public String insert()
    {
        return "insert";
    }
    public String display()
    {
        return "display";
    }

}

Mybean.java

package java4s;
public class Mybean
{
    private int no;
    private String nam="";
    private String ct="";

    public int getNo() {
        return no;
    }
    public void setNo(int no) {
        this.no = no;
    }
    public String getNam() {
        return nam;
    }
    public void setNam(String nam) {
        this.nam = nam;
    }
    public String getCt() {
        return ct;
    }
    public void setCt(String ct) {
        this.ct = ct;
    }     

}

MyOperations.java

package java4s;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

public class MyOperations{    

    SessionFactory factory = HibernatePlug.getFactory();
    Session session = factory.openSession();
    Mybean p;
    List recList = null;

    public List retrieveRecords() {    

        recList = (List<Mybean>) session.createQuery("from Mybean b").list();
        System.out.println("got size"+recList.size());
        return recList;
    }

    public List retrieveRecord(String val) {
          recList = (List<Mybean>) session.createQuery("from Mybean b where b.no="+val).list();
            System.out.println("got size"+recList.size());
          return recList;
        }

    public void insertRecord(Mybean p) {
         Transaction tx = session.beginTransaction();
           session.save(p);
           System.out.println("Object saved successfully.....!!");
         tx.commit();
    }

    public void upRecord(Mybean p) {
         Transaction tx = session.beginTransaction();
            Query qry = session.createQuery("update Mybean b set b.nam=?, b.ct=? where b.no="+p.getNo());
            qry.setParameter(0,p.getNam());
            qry.setParameter(1,p.getCt());
            qry.executeUpdate();
            System.out.println("Object updated successfully...");
         tx.commit();
    }

    public void deleteRecord(String cv[]) {
        Transaction tx = session.beginTransaction();
        for(int i=0;i<cv.length;i++)
        {
            Query qry = session.createQuery("delete from Mybean b where b.no="+cv[i]);
            qry.executeUpdate();
        }
        System.out.println("Object(s) deleted successfully..");
        tx.commit();
    }

}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

struts.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <include file="struts-default.xml"/>
    <package name="a" extends="struts-default">

        <action name="verify" class="java4s.Java4sController" method="getRecords">
            <result name="success">/retrive.jsp</result>
            <result name="error">/error.jsp</result>
        </action>

         <action name="update" class="java4s.Java4sController" method="getRecordToUpdate">
            <result name="success">/edit.jsp</result>
            <result name="error">/error.jsp</result>
        </action>

          <action name="updateRecInDB" class="java4s.Java4sController" method="updateRec">
            <result name="success">/successOperation.jsp</result>
            <result name="error">/error.jsp</result>
        </action>

         <action name="insert" class="java4s.Java4sController" method="insertRecord">
            <result name="success">/successOperation.jsp</result>
            <result name="error">/error.jsp</result>
        </action>

        <action name="delete" class="java4s.Java4sController" method="deleteRecord">
            <result name="success">/successOperation.jsp</result>
            <result name="error">/error.jsp</result>
        </action>

         <action name="*Link" class="java4s.Links" method="{1}">
            <result name="insert">/insertScreen.jsp</result>
            <result name="display">/retrive.jsp</result>
        </action>

    </package>
</struts>

Mybean.hbm

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="java4s.Mybean" table="details">

<id name="no" column="sno">
   <generator class="assigned"/>
</id>

<property name="nam" column="sname" length="10"/>
<property name="ct"  column="scountry"/>

</class>
</hibernate-mapping>

hibernate.cfg.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">    

<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@www.java4s.com:1521:XE</property>
<property name="connection.username">system</property>
<property name="connection.password">admin</property>

<property name="dialect">org.hibernate.dialect.OracleDialect</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>

<mapping resource="Mybean.hbm.xml" />

</session-factory>
</hibernate-configuration>

Java4s.css

.mtable
{
   width: 300px;
   border: 1px solid #b0dd6f;
   background: #c7d8ae;
   border-radius: 5px 5px 0px 0px;
  -webkit-border-radius: 5px 5px 0px 0px;
  -moz-border-radius:5px 5px 0px 0px;
}
.mtableu
{
   width: 300px;
   border: 1px solid #b0dd6f;
   background: #c7d8ae;
   border-radius: 5px 5px 0px 0px;
  -webkit-border-radius: 5px 5px 0px 0px;
  -moz-border-radius:5px 5px 0px 0px;
}
.th
{
font-family: verdana;
font-size: 12px;
}
.td
{
font-family: verdana;
font-size: 12px;
}
.bord,.label
{
font-family: verdana;
font-size: 12px;
}

Output

 

What you are thinkig....

34 Responses to “Struts 2 Hibernate Integration Example [ Struts 2 + Hibernate Integration]”
  1. Mohammed Vaseem says:

    Thanks a lot for uploading this application Java4s. I was in very much need of this type of application…

  2. veerareddy says:

    Good application, it as useful to many programs as a base.

    Thanks to java4s team

  3. Java4s says:

    @Vaseem, @VeeraReddy

    You bet :-)
    thanks much.

  4. Vivek says:

    Great work by java4s. i just completed hibernate tutorial & done all example in netbeans ide. Just one suggestion, you should put UML diagrams of database table, so that it would easy to understand relationships by beginners. Now its time to move on spring let’s see hows it.

    Thanks

  5. Java4s says:

    @Vivek

    Good to hear :-)

  6. KRISHNARAO NETHINTI says:

    good program. very useful for us.. thanq for giving ..

  7. Harish Chand says:

    Thanks a lot, All Example with explanation are perfect.
    Easily understandable.

  8. Java4s says:

    @Harish Chand,@KrishnaRao

    You welcome friends, thanks for your feedback.

  9. Greeshma says:

    Thanks for a very nice tutorial. It would be helpful, if you can provide a zip file of the jar files to download that you used in this example. I face lot of issues in searching for the correct version of jar files that you showed in your screenshot for lib folder.

    Thanks again for the wonderful tutorial.

  10. Java4s says:

    @Greeshma

    I have provided the download link, with source code including all .jar file(s). Click on ‘DOWNLOAD NOW’ button to download every thing to your local :-) enjoy the app.

  11. varun says:

    Java4s is easy to understand ,good job

  12. Saptak says:

    Sir Plese give the code for export pdf,excel,doc,csv & xml in struts2.

  13. i search for this example around 50 websites but no explanation. this is only one website to understand the flow. really thanks to java4s people.

  14. ameer says:

    @Java4s, what is this jar “struts2-fullhibernatecore-plugin-2.2.2-GA.jar” in google code?

  15. abdullah says:

    Great tutorials series. Good Jobs. Moving on Spring..

  16. anurag says:

    nice application.
    thanks

  17. Srinivas says:

    Super app…really fantastic…..thank u very much @java4s

  18. apatic says:

    everything is good but, if the program had comments, then, it would have been a lot easier to newbies.

  19. naresh says:

    nice work,very useful

  20. Suganthan says:

    Thank You very nice example

  21. Baji says:

    hi shivateja plz send an application on sprins(DTO,DAO)+struts+hibernate only these things can required

  22. Paresh Patel says:

    Thanks a lot,good discription

  23. Nice work ,

    Very Thankful to you….

  24. Kamal8878 says:

    Hi,

    Nice work…Published any books from this site?

  25. awesome tutorials ………..

  26. Saroj says:

    Very nice work thanks alot for helping all the learners like me…….

  27. Sadheesh R says:

    hi shivateja,
    I worked out your program,Thanks for a very nice tutorial. if you give comments,then it will be more easier to understand the code flow.

    thanks,

  28. Anand Jain says:

    thank you so much..java4s…it was really helpful learning from your site…and the example were so well explained..finally I could say that now I know Struts and hibernate..and thats coz of java4s..:)

  29. Srinivas says:

    very nice tutorial for freshers and refresh basics for students

    thanks to Sivateja.

  30. jerrin says:

    The website is nice. can get to know all the hibernate concepts on the same place. Please provide an index page so that we can navigate to the pages easily. Thanks

  31. Abhijeet Tomar says:

    Superb series of Struts and Hibernate…Thanks Sivateja.
    Well done..

  32. Saidulu says:

    i am new to struts2 and hibernate. when i study this application i got more than i excepted nice post

    ThanX a lot To TEAM.

If you want a pic to show with your comment, go get a gravatar !
Please post your questions on Java4s Answers forum

Name*
Ask a Question ?
or
Mail*
Website



By posting your answer, you agree to our comments policy.
Most Recent Tutorials
Hibernate Recent Posts
Spring Recent Posts
Struts Recent Posts
Recomandded Links Current & UpComing Tutorials Java4s.com
Tutorials Online :
spring Hibernate struts Json Ajax Log4j Log4j
coreJava Servlets


UpComing :
Servlets, Jsps
is optimized for learning java technologies, all the examples in this site are constantly reviewed to avoid errors. While using this site you agree to have read and accepted our terms of use and privacy policy
Especially i have prepared this blog by keeping fresher's in mind, however it will be very useful for real time developers too.


© 2013 Java4s All rights reserved. | strPro4Tut v(2.0) Theme designed by Team Java4s.