Need help with Hibernate? Read this first:
how develop crud operations in hibernate using struts
here i developes one progarm but this is hard coded for one table i want display all table in combobox we can select on the broser a/c to the tsblr we can perform the crud operations
IselectTable.java
package com.ebaseindia.valuesys.handling_data.tables;
import com.ebaseindia.valuesys.handling_data.tables.actions.Table;
public interface ISelectTable
{
public java.util.List getFields(String table,int number)throws Exception;
public boolean insert(Table table)throws Exception;
public java.util.List getRows()throws Exception;
public boolean delete(Table table,int n)throws Exception;
public boolean update(Table table,int number)throws Exception;
}
SelectTableImp.java
package com.ebaseindia.valuesys.handling_data.tables.actions;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Query;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.ebaseindia.valuesys.handling_data.tables.ISelectTable;
public class SelectTableImpl implements ISelectTable
{
SessionFactory sessionFactory=null;
public SelectTableImpl(){
super();
init();
}
public void init(){
try{
sessionFactory = new Configuration().configure().buildSessionFactory();
}catch(Exception e){
e.printStackTrace();
}
}
public java.util.List getFields(String tableName,int number){
Session session=sessionFactory.openSession();
Transaction txt=session.beginTransaction();
Query q=session.createQuery("from com.ebaseindia.valuesys.handling_data.tables.actions.Table" +" tab where tab.number="+number);
java.util.List list=q.list();
txt.commit();
session.close();
System.out.println(((Table)list.get(0)).getNumber());
System.out.println(((Table)list.get(0)).getName());
return list;
}
public boolean insert(Table t){
try{
Session session=sessionFactory.openSession();
Transaction txt=session.beginTransaction();
session.save(t);
txt.commit();
session.close();
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}
}
public java.util.List getRows(){
Session session=sessionFactory.openSession();
Transaction txt=session.beginTransaction();
Query q=session.createQuery("from com.ebaseindia.valuesys.handling_data.tables.actions.Table");
java.util.List list=q.list();
txt.commit();
session.close();
System.out.println(((Table)list.get(0)).getNumber());
return list;
}
public boolean update(Table t,int number){
try{
Session session=sessionFactory.openSession();
Transaction txt=session.beginTransaction();
session.update(t,new Integer(number));
txt.commit();
session.close();
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}
}
public boolean delete(Table t,int n){
Session session=sessionFactory.openSession();
Transaction txt=session.beginTransaction();
session.load(t,new Integer(n));
session.delete(t);
txt.commit();
session.close();
return true;
}
}
Table.java
ackage com.ebaseindia.valuesys.handling_data.tables.actions;
public class Table
{
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setNumber(int number){
this.number=number;
}
public int getNumber(){
return number;
}
private String name;
int number;
}
SelectTableForm.java
package com.ebaseindia.valuesys.handling_data.tables.forms;
import org.apache.struts.action.ActionForm;
public class SelectTableForm extends ActionForm
{
public void setTableName(String tableName){
this.tableName=tableName;
}
public String getTableName(){
return tableName;
}
public void setOperation(String operation){
this.operation=operation;
}
public String getOperation(){
return operation;
}
private String tableName,operation;
}
SelectTableAction.java
package com.ebaseindia.valuesys.handling_data.tables.actions;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.ebaseindia.valuesys.handling_data.tables.ISelectTable;
import com.ebaseindia.valuesys.handling_data.tables.forms.InsertTableForm;
import com.ebaseindia.valuesys.handling_data.tables.forms.SelectTableForm;
public class SelectTableAction extends DispatchAction
{
public ActionForward insert(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionErrors errors = new ActionErrors(); // for errors
ActionForward forward = new ActionForward(); // return value
String target="fail";
System.out.println("before try");
try{
SelectTableForm stForm=(SelectTableForm)form;
HttpSession session = request.getSession();
String tableName = stForm.getTableName();
session.setAttribute("tableName",tableName);
ISelectTable ist=new SelectTableImpl();
java.util.List tableFields=ist.getRows();
int max=0;
for(int i=0;i<tableFields.size();i++){
if( max<((Table)tableFields.get(i)).getNumber())
max=((Table)tableFields.get(i)).getNumber();
}
session.setAttribute("id",new Integer(max+1));
//session.setAttribute("tableFields",tableFields);
return mapping.findForward("insert");
}catch(Exception e){
System.out.println("in cathc");
e.printStackTrace();
errors.add("error",new ActionError("errorID"));
}
forward=new ActionForward(target);
return forward;
}
public ActionForward update(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionErrors errors = new ActionErrors(); // for errors
ActionForward forward = new ActionForward(); // return value
String target="fail";
System.out.println("before try");
try{
SelectTableForm stForm=(SelectTableForm)form;
HttpSession session = request.getSession();
String tableName = stForm.getTableName();
session.setAttribute("tableName",tableName);
ISelectTable ist=new SelectTableImpl();
java.util.List tableFields=ist.getRows();
session.setAttribute("tableFields",tableFields);
return mapping.findForward("update");
}catch(Exception e){
System.out.println("in cathc");
e.printStackTrace();
errors.add("error",new ActionError("errorID"));
}
forward=new ActionForward(target);
return forward;
}
public ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionErrors errors = new ActionErrors(); // for errors
ActionForward forward = new ActionForward(); // return value
String target="fail";
System.out.println("before try");
try{
SelectTableForm stForm=(SelectTableForm)form;
HttpSession session = request.getSession();
String tableName = stForm.getTableName();
session.setAttribute("tableName",tableName);
ISelectTable ist=new SelectTableImpl();
java.util.List tableFields=ist.getRows();
session.setAttribute("tableFields",tableFields);
return mapping.findForward("delete");
}catch(Exception e){
System.out.println("in cathc");
e.printStackTrace();
errors.add("error",new ActionError("errorID"));
}
forward=new ActionForward(target);
return forward;
}
}
InsertTableForm.java
package com.ebaseindia.valuesys.handling_data.tables.forms;
import org.apache.struts.action.ActionForm;
public class InsertTableForm extends ActionForm
{
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setNumber(int number){
this.number=number;
}
public int getNumber(){
return number;
}
private String name;
private int number;
}
InsertTableAction.java
package com.ebaseindia.valuesys.handling_data.tables.actions;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.ebaseindia.valuesys.handling_data.tables.forms.InsertTableForm;
import com.ebaseindia.valuesys.handling_data.tables.forms.SelectTableForm;
import com.ebaseindia.valuesys.handling_data.tables.ISelectTable;
public class InsertTableAction extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionErrors errors = new ActionErrors(); // for errors
ActionForward forward = new ActionForward(); // return value
String target="error";
try{
InsertTableForm stForm=(InsertTableForm)form;
String name = stForm.getName();
// String number=stForm.getNumber();
Table t=new Table();
// t.setNumber(number);
t.setName(name);
ISelectTable ist=new SelectTableImpl();
boolean flag=ist.insert(t);
if(flag)
return mapping.findForward("insert");
return mapping.findForward("fail");
}catch(Exception e){
e.printStackTrace();
errors.add("error",new ActionError("errorID"));
}
forward=new ActionForward(target);
return forward;
}
}
DeleteTableForm.java
package com.ebaseindia.valuesys.handling_data.tables.forms;
import org.apache.struts.action.ActionForm;
public class DeleteTableForm extends ActionForm
{
public void setRowID(int number){
this.number=number;
}
public int getRowID(){
return number;
}
private int number;
}
DeleteTableAction.java
package com.ebaseindia.valuesys.handling_data.tables.actions;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.ebaseindia.valuesys.handling_data.tables.forms.DeleteTableForm;
import com.ebaseindia.valuesys.handling_data.tables.ISelectTable;
public class DeleteTableAction extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionErrors errors = new ActionErrors(); // for errors
ActionForward forward = new ActionForward(); // return value
String target="error";
try{
DeleteTableForm stForm=(DeleteTableForm)form;
int number = stForm.getRowID();
Table t=new Table();
ISelectTable ist=new SelectTableImpl();
boolean flag=ist.delete(t,number);
if(flag)
return mapping.findForward("delete");
return mapping.findForward("fail");
}catch(Exception e){
e.printStackTrace();
errors.add("error",new ActionError("errorID"));
}
forward=new ActionForward(target);
return forward;
}
}
UpdateTableAction.java
package com.ebaseindia.valuesys.handling_data.tables.actions;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.ebaseindia.valuesys.handling_data.tables.forms.InsertTableForm;
import com.ebaseindia.valuesys.handling_data.tables.forms.SelectTableForm;
import com.ebaseindia.valuesys.handling_data.tables.ISelectTable;
public class UpdateTableAction extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionErrors errors = new ActionErrors(); // for errors
ActionForward forward = new ActionForward(); // return value
String target="error";
try{
InsertTableForm stForm=(InsertTableForm)form;
String name = stForm.getName();
int number=stForm.getNumber();
Table t=new Table();
t.setNumber(number);
t.setName(name);
ISelectTable ist=new SelectTableImpl();
boolean flag=ist.update(t,number);
if(flag)
return mapping.findForward("update");
return mapping.findForward("fail");
}catch(Exception e){
e.printStackTrace();
errors.add("error",new ActionError("errorID"));
}
forward=new ActionForward(target);
return forward;
}
}
SelectDataAction.java
package com.ebaseindia.valuesys.handling_data.tables.actions;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.ebaseindia.valuesys.handling_data.tables.forms.DeleteTableForm;
import com.ebaseindia.valuesys.handling_data.tables.ISelectTable;
public class SelectDataAction extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionErrors errors = new ActionErrors(); // for errors
ActionForward forward = new ActionForward(); // return value
String target="error";
try{
DeleteTableForm stForm=(DeleteTableForm)form;
HttpSession session = request.getSession();
int number = stForm.getRowID();
Table t=new Table();
ISelectTable ist=new SelectTableImpl();
java.util.List tableFields=ist.getFields((String)session.getAttribute("tableName"),number);
session.setAttribute("tableFields",tableFields);
return mapping.findForward("display");
}catch(Exception e){
e.printStackTrace();
errors.add("error",new ActionError("errorID"));
}
forward=new ActionForward(target);
return forward;
}
}
example.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.ebaseindia.valuesys.handling_data.tables.actions.Table" table="ExampleTable">
<!-- A 32 hex character is our surrogate key. It's automatically
generated by Hibernate with the UUID pattern. -->
<id name="number" type="int">
<column name="id"/>
<!-- <generator class="sequence">
<param name="sequence">exampletable_id_seq</param>
</generator> -->
<generator class="increment"/>
</id>
<!-- A cat has to have a name, but it shouldn' be too long. -->
<property name="name" column="name"/>
</class>
</hibernate-mapping>
<?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.ebaseindia.valuesys.handling_data.tables.actions.Table" table="ExampleTable">
<!-- A 32 hex character is our surrogate key. It's automatically
generated by Hibernate with the UUID pattern. -->
<id name="number" type="int">
<column name="id"/>
<!-- <generator class="sequence">
<param name="sequence">exampletable_id_seq</param>
</generator> -->
<generator class="increment"/>
</id>
<!-- A cat has to have a name, but it shouldn' be too long. -->
<property name="name" column="name"/>
</class>
</hibernate-mapping>
hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//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:@localhost:1521:oracle</property>
<property name="connection.user">scott</property>
<property name="connection.password">tiger</property>
<!-- Mapping files -->
<mapping resource="ExampleTable.hbm.xml"/>
</session-factory>
</hibernate-configuration>
delete.jsp
<html>
<body>
<form action="delete.do">
<select name="rowID">
<%
java.util.List l=(java.util.List)session.getAttribute("tableFields");
for(int i=0;i<l.size();i++)
{
%>
<option>
<%
out.println( ((com.ebaseindia.valuesys.handling_data.tables.actions.Table)l.get(i)).getNumber());
%>
</option>
<%
}
%>
</select>
<input type="submit" value="delete">
</form>
<!--
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<html:html>
<body>
<html:form action="delete">
<html:select property="rowID">
<logic:iterate name="tableFields" id="tf">
<html:option value='<bean:write name="tf" property="name"/>'>
<bean:write name="tf" property="name"/>
</html:option>
</logic:iterate>
</html:select>
<html:submit/>
</html:form>
</body>
</html:html>
-->
update.jsp
<html>
<body>
<form action="getData.do">
<select name="rowID">
<%
java.util.List l=(java.util.List)session.getAttribute("tableFields");
for(int i=0;i<l.size();i++)
{
%>
<option>
<%
out.println( ((com.ebaseindia.valuesys.handling_data.tables.actions.Table)l.get(i)).getNumber());
%>
</option>
<%
}
%>
</select>
<input type="submit" value="update">
</form>
Display.jsp
<html>
<body>
<form action="update.do">
<%
java.util.List l=(java.util.List)session.getAttribute("tableFields");
for(int i=0;i<l.size();i++)
{
out.println("<input type=hidden name=number value="+request.getParameter("rowID")+">");
out.println("Number : "+ ((com.ebaseindia.valuesys.handling_data.tables.actions.Table)l.get(i)).getNumber());
out.println("</br>Name : <input type=\"text\" name=\"name\" value="+((com.ebaseindia.valuesys.handling_data.tables.actions.Table)l.get(i)).getName()+"></br>");
}
%>
<input type="submit" value="update">
</form>
</body>
</html>
insrt.jsp
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<html:html>
<body>
<html:form action="insert">
Number :<html:text property="number"/>
Name :<html:text property="name"/>
<html:submit/>
</html:form>
</body>
</html:html>
main.jsp
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<html:html>
<body>
<html:form action="/main">
Select reference table name:
<html:select property="tableName">
<html:option value="exampletable">exampletable</html:option>
<html:option value="upc">upc</html:option>
<html:option value="instrument_type">instrument types</html:option>
</html:select> <br>
Select the option to be perform:
<html:select property="operation">
<html:option value="insert">Insert</html:option>
<html:option value="update">Update</html:option>
<html:option value="delete">Delete</html:option>
</html:select>
<html:submit value="Submit"></html:submit><html:reset value="Reset"></html:reset>
</html:form>
</body>
</html:html>
strutsconfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<!-- Form Beans -->
<form-beans>
<form-bean
name="insertForm" type="com.ebaseindia.valuesys.handling_data.tables.forms.InsertTableForm">
</form-bean>
<form-bean
name="deleteForm" type="com.ebaseindia.valuesys.handling_data.tables.forms.DeleteTableForm">
</form-bean>
<form-bean
name="mainForm" type="com.ebaseindia.valuesys.handling_data.tables.forms.SelectTableForm">
</form-bean>
</form-beans>
<action-mappings>
<form-bean
name="updateForm" type="com.ebaseindia.valuesys.handling_data.tables.forms.UpdateTableForm">
</form-bean>
<action
path="/main"
type="com.ebaseindia.valuesys.handling_data.tables.actions.SelectTableAction"
name="mainForm"
validate="false"
scope="session"
parameter="operation">
<forward name="insert" path="/Insert.jsp"/>
<forward name="delete" path="/Delete.jsp"/>
<forward name="update" path="/Update.jsp"/>
<forward name="fail" path="/fail.jsp"/>
</action>
<action
path="/insert"
type="com.ebaseindia.valuesys.handling_data.tables.actions.InsertTableAction"
name="insertForm"
validate="false"
scope="session">
<forward name="insert" path="/ISuccess.jsp"/>
<forward name="fail" path="/fail.jsp"/>
</action>
<action
path="/delete"
type="com.ebaseindia.valuesys.handling_data.tables.actions.DeleteTableAction"
name="deleteForm"
validate="false"
scope="session">
<forward name="delete" path="/DSuccess.jsp"/>
<forward name="fail" path="/fail.jsp"/>
</action>
<action
path="/update"
type="com.ebaseindia.valuesys.handling_data.tables.actions.UpdateTableAction"
name="updateForm"
validate="false"
scope="session">
<forward name="delete" path="/USuccess.jsp"/>
<forward name="fail" path="/fail.jsp"/>
</action>
</action-mappings>
</struts-config>
http://www.hibernate.org/ForumMailingli ... AskForHelp
Hibernate version: 3.0
Mapping documents:
Code between sessionFactory.openSession() and session.close():
Full stack trace of any exception that occurs:
Name and version of the database you are using:
The generated SQL (show_sql=true):
Debug level Hibernate log excerpt: