In this section, you will learn about the Struts, Spring and Hibernate Integration.
The tools & technology used is given below :
The SQL query used to create the employee table is given below :
CREATE TABLE `employee` ( `EMPLOYEE_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 (`EMPLOYEE_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
Three easy steps to integrate Struts, Spring and Hibernate :
Let us discuss these steps in detail using a example :
The project structure is given below:

The jar file used is given below :
![]() |
![]() |
web.xml
In the below example, Listener class ContextLoaderListener loads SpringBeans.xml file(which load beans), and also interact with Struts. It also loads bean class LocalSessionFactoryBean which will deal with Hibernate.
<?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"> <display-name>StrutsSpringHibernate</display-name> <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> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/SpringBeans.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> </web-app>
SpringBeans.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- Database Configuration -->
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>/WEB-INF/properties/database.properties
</value>
</property>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- Hibernate session factory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>net/roseindia/hibernate/Employee.hbm.xml</value>
</list>
</property>
</bean>
<!-- Beans Declaration -->
<bean id="employeeAction" class="net.roseindia.employee.action.EmployeeAction">
<property name="employeeDAO" ref="employeeDAO" />
</bean>
<bean id="employeeDAO" class="net.roseindia.employee.dao.impl.EmployeeDAOImpl" >
<property name="sessionFactory" ref="sessionFactory" />
</bean>
</beans>
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> <constant name="struts.devMode" value="true" /> <package name="default" extends="struts-default" namespace="/" > <action name="addEmployeeAction" class="net.roseindia.employee.action.EmployeeAction" method="addEmployee" > <result name="success">pages/employee.jsp</result> </action> <action name="listEmployeeAction" class="net.roseindia.employee.action.EmployeeAction" method="listEmployee" > <result name="success">pages/employee.jsp</result> </action> </package> </struts>
Employee.hbm.xml
<?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="net.roseindia.employee.model.Employee" table="employee"> <id name="employeeId" type="java.lang.Long"> <column name="EMPLOYEE_ID" /> <generator class="identity" /> </id> <property name="name" type="string"> <column name="NAME" length="45" not-null="true" /> </property> <property name="address" type="string"> <column name="ADDRESS" not-null="true" /> </property> <property name="createdDate" type="timestamp"> <column name="CREATED_DATE" length="19" not-null="true" /> </property> </class> </hibernate-mapping>
Employee.java
package net.roseindia.employee.model;
import java.util.Date;
public class Employee implements java.io.Serializable {
private Long employeeId;
private String name;
private String address;
private Date createdDate;
public Employee() {
}
public Employee(Long employeeId, String name, String address,
Date createdDate) {
this.employeeId = employeeId;
this.name = name;
this.address = address;
this.createdDate = createdDate;
}
public Long getEmployeeId() {
return employeeId;
}
public void setEmployeeId(Long employeeId) {
this.employeeId = employeeId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Date getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
}
EmployeeDAO.java
package net.roseindia.employee.model;
import java.util.Date;
public class Employee implements java.io.Serializable {
private Long employeeId;
private String name;
private String address;
private Date createdDate;
public Employee() {
}
public Employee(Long employeeId, String name, String address,
Date createdDate) {
this.employeeId = employeeId;
this.name = name;
this.address = address;
this.createdDate = createdDate;
}
public Long getEmployeeId() {
return employeeId;
}
public void setEmployeeId(Long employeeId) {
this.employeeId = employeeId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Date getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
}
EmployeeDAOImpl.java
package net.roseindia.employee.dao.impl;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import net.roseindia.employee.dao.EmployeeDAO;
import net.roseindia.employee.model.Employee;
public class EmployeeDAOImpl extends HibernateDaoSupport implements EmployeeDAO{
//add the customer
public void addEmployee(Employee employee){
getHibernateTemplate().save(employee);
}
//return all the customers in list
public List<Employee> listEmployee(){
return getHibernateTemplate().find("from Employee");
}
}
EmployeeAction.java
package net.roseindia.employee.action;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import net.roseindia.employee.dao.EmployeeDAO;
import net.roseindia.employee.model.Employee;
import com.opensymphony.xwork2.ModelDriven;
public class EmployeeAction implements ModelDriven{
Employee employee = new Employee();
List<Employee> employeeList = new ArrayList<Employee>();
EmployeeDAO employeeDAO;
//Spring Dependency Injection
public void setEmployeeDAO(EmployeeDAO employeeDAO) {
this.employeeDAO = employeeDAO;
}
public Object getModel() {
return employee;
}
public List<Employee> getEmployeeList() {
return employeeList;
}
public void setEmployeeList(List<Employee> employeeList) {
this.employeeList = employeeList;
}
//saving employee record
public String addEmployee() throws Exception{
//save employee
employee.setCreatedDate(new Date());
employeeDAO.addEmployee(employee);
//reload the employee list
employeeList = null;
employeeList = employeeDAO.listEmployee();
return "success";
}
//list all customers
public String listEmployee() throws Exception{
employeeList = employeeDAO.listEmployee();
return "success";
}
}
database.properties
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://192.168.10.13:3306/company jdbc.username=root jdbc.password=root
employee.jsp
<%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> </head> <body> <h2><i>Integration Example - Struts 2,Spring & Hibernate</i></h2> <hr></hr> <h3><i>Add New Employee</i></h3> <s:form action="addEmployeeAction" > <s:textfield name="name" label="Employee Name" value="" size="37"/> <s:textarea name="address" label="Employee Address" value="" cols="28" rows="3" /> <s:submit align="center"/> </s:form> <hr></hr> <h3><i>Employee List</i></h3> <s:if test="employeeList.size() > 0"> <table border="2px" cellpadding="8px"> <tr> <th>Employee<br/>ID</th> <th>Name</th> <th>Address</th> <th>Created Date</th> </tr> <s:iterator value="employeeList" status="userStatus"> <tr> <td><s:property value="employeeId" /></td> <td><s:property value="name" /></td> <td><s:property value="address" /></td> <td><s:date name="createdDate" format="dd/MM/yyyy" /></td> </tr> </s:iterator> </table> </s:if> <br/> <br/> </body> </html>
When you call the following URL :
http://localhost:9090/StrutsSpringHibernate/listEmployeeAction.action
you will get the following page :

If you are facing any programming issue, such as compilation errors or not able to find the code you are looking for.
Ask your questions, our development team will try to give answers to your questions.
Ask Questions? Discuss: Struts Spring Hibernate
Post your Comment