Hibernate Framework : ORM Tool :: Hibernate 3.2 with Struts 2.x
Hibernate With Struts 2.0 Intro |
Here, we will show how the Web Framework Struts and the Database Persistence Solution Hibernate can be used together.
Hibernate With Struts2, Here we will see Hibernate Application with Struts2 in Eclipse. In this page we will understand to create a project (Item management) to demonstrate use of Struts2 with Hibernate 3.2;
Here, we will learn how to insert , update ,delete and display Item Details.
Hibernate With Struts 2.0 Example |
Project Hierarchy
Item.java
package com.javaskool;
public class Item
{
private int ItemId=0;
private String ItemName="";
private int Qty=0;
public int getItemId() {
return ItemId;
}
public void setItemId(int itemId) {
ItemId = itemId;
}
public String getItemName() {
return ItemName;
}
public void setItemName(String itemName) {
ItemName = itemName;
}
public int getQty() {
return Qty;
}
public void setQty(int qty) {
Qty = qty;
}
}
ItemController.java
package com.javaskool;
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 ItemController extends ActionSupport implements ServletRequestAware,ApplicationAware
{
private static final long serialVersionUID = 1L;
ItemOperation ma = new ItemOperation();
private List<Item> recordsFromDB;
Item b;
public Item getB() {
return b;
}
public void setB(Item 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<Item> 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<Item> it = recordsFromDB.iterator();
while(it.hasNext())
{
Object o = it.next();
b = (Item)o;
}
m.put("x",b.getItemId());
m.put("y", b.getItemName());
m.put("z",b.getQty());
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 com.javaskool;
public class Links{
public String insert()
{
return "insert";
}
public String display()
{
return "display";
}
}
MyHibernatePlug.java
package com.javaskool;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class MyHibernatePlug{
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;
}
}
ItemOperation.java
package com.javaskool;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
public class ItemOperation{
SessionFactory factory = MyHibernatePlug.getFactory();
Session session = factory.openSession();
Item p;
List recList = null;
public List retrieveRecords() {
recList = (List<Item>) session.createQuery("from Item").list();
System.out.println("got size"+recList.size());
return recList;
}
public List retrieveRecord(String val) {
recList = (List<Item>) session.createQuery("from Item b where b.Itemclass="n+val).list();
System.out.println("got size"+recList.size());
return recList;
}
public void insertRecord(Item p) {
Transaction tx = session.beginTransaction();
session.save(p);
System.out.println("Object saved successfully.....!!");
tx.commit();
}
public void upRecord(Item p) {
Transaction tx = session.beginTransaction();
Query qry = session.createQuery("update Item b set b.ItemName=?, b.Qty=? where b.Itemclass="n+p.getItemId());
qry.setParameter(0,p.getItemName());
qry.setParameter(1,p.getQty());
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 Item b where b.Itemclass="n+cv[i]);
qry.executeUpdate();
}
System.out.println("Object(s) deleted successfully..");
tx.commit();
}
}
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="pfname">javaskoolMySQLDriver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/javaskoolDB</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.username">root</property>
<property name="connection.password">admin</property>
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<mapping resource="item.hbm.xml" />
</session-factory>
</hibernate-configuration>
item.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="com.javaskool.Item" table="itemDetails">
<id name="ItemId" column="ItemId" >
<generator class="assigned" />
</id>
<property name="ItemName" column="ItemName"/>
<property name="Qty" column="Qty"/>
</class>
</hibernate-mapping>
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="com.javaskool.ItemController" method="getRecords">
<result name="success">/retriveItem.jsp</result>
<result name="error">/error.jsp</result>
</action>
<action name="update" class="com.javaskool.ItemController" method="getRecordToUpdate">
<result name="success">/editItem.jsp</result>
<result name="error">/error.jsp</result>
</action>
<action name="updateRecInDB" class="com.javaskool.ItemController" method="updateRec">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
<action name="insert" class="com.javaskool.ItemController" method="insertRecord">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
<action name="delete" class="com.javaskool.ItemController" method="deleteRecord">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
<action name="*Link" class="com.javaskool.Links" method="{1}">
<result name="insert">/insertItem.jsp</result>
<result name="display">/retriveItem.jsp</result>
</action>
</package>
</struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<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>
Project Output Screen for Display and Delete Items
Project Output Screen for Insert
Project Output Screen for Modify
Table and Record after running the project
mysql> create table itemDetails
-> (
-> ItemId int,
-> ItemName varchar(20),
-> Qty int
-> );
Query OK, 0 rows affected (0.24 sec)
mysql> select * from itemDetails;
+--------+-----------+------+
| ItemId | ItemName | Qty |
+--------+-----------+------+
| 101 | USB Mouse | 70 |
| 102 | Monitor | 40 |
| 103 | Pen Drive | 50 |
+--------+-----------+------+
3 rows in set (0.01 sec)
mysql>
Download Examples |
Recent Comments