CRUD using JSP Hibernate (JSP + Hibernate Example):
(JSP + Hibernate CRUD)
Here is a code for creating, updating, deleting and reading using JSP and Hibernate. This code is tested in Netbeans 8.0.2.
Steps:
1. File –>New Project –> Java Web –>Web Application (Choose Project)
2. Web Application name –>jsphiber then click–> Next (Name and Location)
3. click next (Server and Settings)
4. In Frameworks select Hibernate and choose the Database from the dropdownlist and click Finish
Video Tutorial:
javainfinite.pojo.EmployeeDetails.java
package javainfinite.pojo; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; /** * * @author Vikram */ @Entity public class EmployeeDetails implements Serializable { @Id @GeneratedValue int id; String ename; String enumber; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getEnumber() { return enumber; } public void setEnumber(String enumber) { this.enumber = enumber; } }
javainfinite.DAO.EmployeeDao
package javainfinite.DAO; import java.util.List; import javainfinite.pojo.EmployeeDetails; /** * * @author Vikram */ public interface EmployeeDao { public void saveEmployee (EmployeeDetails employee); public List<EmployeeDetails> showAllEmployees(); public void updateEmployee (int id, String ename, String enumber); public void deleteEmployee (EmployeeDetails employee); }
javainfinite.DAOImpl.EMployeeDaoImpl
package javainfinite.DAOImpl; import java.util.ArrayList; import java.util.List; import javainfinite.DAO.EmployeeDao; import javainfinite.pojo.EmployeeDetails; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.Query; /** * * @author Vikram */ public class EmployeeDaoImpl implements EmployeeDao { @Override public void saveEmployee(EmployeeDetails employee) { Session session = HibernateUtil.getSessionFactory().openSession(); Transaction transaction = session.beginTransaction(); session.save(employee); transaction.commit(); session.close(); } @Override public List<EmployeeDetails> showAllEmployees() { List<EmployeeDetails> employeeList = new ArrayList(); Session session = HibernateUtil.getSessionFactory().openSession(); Query query = session.createQuery("From EmployeeDetails"); employeeList = query.list(); return employeeList; } @Override public void updateEmployee(int id, String ename, String enumber) { Session session = HibernateUtil.getSessionFactory().openSession(); Transaction transaction = session.beginTransaction(); EmployeeDetails empdetails = (EmployeeDetails)session.load(EmployeeDetails.class, id); empdetails.setEname(ename); empdetails.setEnumber(enumber); session.update(empdetails); transaction.commit(); session.close(); } @Override public void deleteEmployee(EmployeeDetails employee) { Session session = HibernateUtil.getSessionFactory().openSession(); Transaction transaction = session.beginTransaction(); session.delete(employee); transaction.commit(); session.close(); } }
javainfinite.DAOImpl.HibernateUtil.java
package javainfinite.DAOImpl; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.SessionFactory; /** * Hibernate Utility class with a convenient method to get Session Factory * object. * * @author Vikram */ public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { // Create the SessionFactory from standard (hibernate.cfg.xml) // config file. sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); } catch (Throwable ex) { // Log the exception. System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } }
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="hibernate.hbm2ddl.auto">update</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/employee</property> <property name="hibernate.connection.username">username</property> <mapping class="javainfinite.pojo.EmployeeDetails"></mapping> </session-factory> </hibernate-configuration>
EmployeeAdd.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Employee</title> </head> <body> <div id="add"> <h1> Add Employee </h1> <form action="EmployeeController" method="GET"> <table> <tr> <td> Employee Name: </td> <td><input type="text" name="ename"></td> </tr> <tr> <td> Employee Number: </td> <td><input type="text" name="enumber"></td> </tr> <tr> <td><input type="submit" name="addEmployee" value="Add"></td> </tr> </table> </form> </div> <form action="EmployeeController" method="POST"> <input type="submit" name="showEmployee" value="Show"> <br> </form> </body> </html>
ShowAll.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(document).ready(function(){ $("#deleteEmployee").hide(); $("#updateEmployee").hide(); $("#update").click(function(){ $("#updateEmployee").show(); $("#deleteEmployee").hide(); }); $("#delete").click(function(){ $("#deleteEmployee").show(); $("#updateEmployee").hide(); }); }); </script> </head> <body> All Employees: <br> <c:forEach var="emp" items="${employeeList}"> Employee ID: ${emp.id} <br> Employee Name: ${emp.ename} <br> Employee Number: ${emp.enumber}<br> -------------------------------------<br> </c:forEach> <form action="EmployeeController" method="POST"> Update: <input type="checkbox" id="update"> Delete: <input type="checkbox" id="delete" onclick="document.getElementById('ename').disabled=this.checked;document.getElementById('enumberupdate').disabled=this.checked;"><br><br> <select name="id"> <c:forEach items="${employeeList}" var="employee"> <option value="${employee.id}">${employee.id}</option> </c:forEach> </select> <br> Update Name: <input id="ename" type="text" name="ename"><br> Update Number: <input id="enumberupdate" type="text" name="enumberupdate"> <br><br> <button type="submit" id="updateEmployee" name="updateEmployee"> Update</button> <br> <br> <button type="submit" id="deleteEmployee" name="deleteEmployee"> Delete </button> </form> </body> </html>
Controller.EmployeeController
package Controller; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javainfinite.DAO.EmployeeDao; import javainfinite.DAOImpl.EmployeeDaoImpl; import javainfinite.pojo.EmployeeDetails; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class EmployeeController extends HttpServlet { EmployeeDetails employee = new EmployeeDetails(); EmployeeDaoImpl employeeDaoImpl = new EmployeeDaoImpl(); EmployeeDao edao; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if(request.getParameter("addEmployee")!=null){ String ename = request.getParameter("ename"); String enumber = request.getParameter("enumber"); employee.setEname(ename); employee.setEnumber(enumber); employeeDaoImpl.saveEmployee(employee); RequestDispatcher rd = request.getRequestDispatcher("EmployeeAdd.jsp"); rd.forward(request, response); } } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if(request.getParameter("showEmployee")!=null){ List<EmployeeDetails> employeeList = new ArrayList(); employeeList = employeeDaoImpl.showAllEmployees(); request.setAttribute("employeeList", employeeList); RequestDispatcher rd = request.getRequestDispatcher("ShowAll.jsp"); rd.forward(request, response); } if(request.getParameter("updateEmployee")!=null){ int id1 = Integer.parseInt(request.getParameter("id")); String ename = request.getParameter("ename"); String enumberupdate = request.getParameter("enumberupdate"); employeeDaoImpl.updateEmployee(id1, ename, enumberupdate); RequestDispatcher rd = request.getRequestDispatcher("EmployeeAdd.jsp"); rd.forward(request, response); } if(request.getParameter("deleteEmployee")!=null){ int id2 = Integer.parseInt(request.getParameter("id")); employee.setId(id2); employeeDaoImpl.deleteEmployee(employee); RequestDispatcher rd = request.getRequestDispatcher("EmployeeAdd.jsp"); rd.forward(request, response); } } @Override public String getServletInfo() { return "Short description"; }// </editor-fold> }
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <servlet> <servlet-name>EmployeeController</servlet-name> <servlet-class>Controller.EmployeeController</servlet-class> </servlet> <servlet-mapping> <servlet-name>EmployeeController</servlet-name> <url-pattern>/EmployeeController</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>EmployeeAdd.jsp</welcome-file> </welcome-file-list> </web-app>
You can download this example here: Download Source Code (Note: JSP and Src files are included, Please dont forget to include libraries to run this code. – JSTL, Hibernate Framework, mySQL driver)
Output:
CLick Show after Add,
After Update,
After Delete,
when I click save/display/update/delete I get HTTP 404 not found how to fix it please
Can you please post your error
I am working on posting video for this Article, Step by step process. Will include the video link shortly
I have included a link to download the example code, Please download to avoid the 404 error
I am getting the same error as said by MARIO. The input.jsp file is displaying the table. but unable to do any button click it is showing the same error as specified by him. Please do tell where to make corrections and where to include all the JSP files.
I have worked the application with Netbeans 8.0.2 and MySql Server 5.5
I am working on posting video for this Article, Step by step process. Will include the video link shortly
I have included a link to download the example code, Please download to avoid the 404 error
Showing this error
org.hibernate.HibernateException: hibernate.cfg.xml not found
Check the path where you have your hibernate.cfg.xml