Create, Read, Update and Delete(CRUD) operations in hibernate using JSP and Servlet. In this hibernate tutorial, let’s create a simple java application to Add/Edit/Update/Delete employees using Hibernate, JSP, and Servlet.
Steps for CRUD Operation in hibernate using JSP and Servlet
- Create a Maven Project for web applications.
- Add required Maven Dependencies.
- Hibernate Configuration and Database Setup.
- Create packages.
- Setup Entity Class.
- Create Hibernate Data Source and set up Session Factory, OpenSession, and Close Session.
- Design form of JSP or HTML things to send the request.
- Create Controller and configure the controller.
- Prepare Models for database transactions.
CRUD Operation in hibernate using JSP and Servlet
Home.jsp
<%@page import="com.hibcrud.entity.Employee"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Home</title>
<style>
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
</style>
</head>
<body>
<h2>CRUD operations in hierbante using JSP and Servlet</h2>
<pre>
<form action="AddEmpCtl" method="post">
<jsp:useBean id="bean" class="com.hibcrud.entity.Employee" scope="request"></jsp:useBean>
<input type="hidden" name="id" value="<%=bean.getId()%>">
UserName: <input type="text" name="username" id="username" value="<%=(bean.getUsername()!=null)?bean.getUsername():" "%>">
Password: <input type="text" name="password" id="password" value="<%=(bean.getPassword()!=null)?bean.getPassword():" "%>">
Name: <input type="text" name="name" id="name" value="<%=(bean.getName()!=null)?bean.getName():" "%>">
<input type="submit" value="SignUP">
</form>
</pre>
<h2>Employee List</h2>
<table>
<tr>
<th>UserName</th>
<th>Password</th>
<th>Name</th>
</tr>
<%
List<Employee> empList = (List)request.getAttribute("empList");
for(Employee temp:empList){
%>
<tr>
<td><%=temp.getUsername() %></td>
<td><%=temp.getPassword() %></td>
<td><%=temp.getName() %></td>
<td><a href="/HibCrud/AddEmpCtl?editId=<%=temp.getId()%>">Edit</a></td>
<td><a href="/HibCrud/AddEmpCtl?delId=<%=temp.getId()%>">Delete</a></td>
</tr>
<%} %>
</table>
</body>
</html>
AddEmpCtl.java(Controller)
package com.hibcrud.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.function.LongPredicate;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hibcrud.entity.Employee;
import com.hibcrud.model.EmployeeModel;
/**
* Servlet implementation class AddEmpCtl
*/
@WebServlet("/AddEmpCtl")
public class AddEmpCtl extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public AddEmpCtl() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//response.getWriter().append("Served at: ").append(request.getContextPath());
long editid = (request.getParameter("editId")==null)?0:Long.parseLong(request.getParameter("editId"));
long delId = (request.getParameter("delId")==null?0:Long.parseLong(request.getParameter("delId")));
Employee emp = new Employee();
if(editid>0) {
emp = EmployeeModel.FindById(editid);
}
if(delId>0) {
EmployeeModel.deleteEmp(delId);
}
request.setAttribute("bean", emp);
List<Employee> empList = EmployeeModel.GetEmployeeList();
request.setAttribute("empList", empList);
request.getRequestDispatcher("/jsp/home.jsp").forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
String password = request.getParameter("password");
String name = request.getParameter("name");
long id = Long.parseLong(request.getParameter("id"));
if(id>0) {
Employee updatedEmp = new Employee(id, username, password, name);
EmployeeModel.UpdateEmp(updatedEmp);
System.out.println("Data is updated");
}else {
Employee emp = new Employee(username, password, name);
long resid = EmployeeModel.SignUp(emp);
if(resid>0) {
out.print("Employee is added into database");
}else {
out.print("Someting went wrong");
}
}
doGet(request, response);
}
}
Employee.java (Bean)
package com.hibcrud.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "employee")
public class Employee {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY )
private long id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Column(name = "name")
private String name;
public Employee(String username, String password, String name) {
super();
this.username = username;
this.password = password;
this.name = name;
}
public Employee() {
// TODO Auto-generated constructor stub
}
public Employee(long id, String username, String password, String name) {
this.id = id;
this.username = username;
this.password = password;
this.name = name;
}
@Override
public String toString() {
return "Employee [id=" + id + ", username=" + username + ", password=" + password + ", name=" + name + "]";
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
EmployeeModel.java
package com.hibcrud.model;
import java.util.List;
import org.hibernate.Session;
import com.hibcrud.entity.Employee;
import com.hibcrud.utility.HibDataSource;
public class EmployeeModel {
public static Employee FindById(long id) {
Session session = HibDataSource.getSession();
session.beginTransaction();
Employee emp = (Employee) session.get(Employee.class, id);
return emp;
}
public static long SignUp(Employee emp) {
Session session = HibDataSource.getSession();
session.beginTransaction();
long id = (long) session.save(emp);
session.getTransaction().commit();
return id;
}
public static void UpdateEmp(Employee emp) {
Session session = HibDataSource.getSession();
session.beginTransaction();
session.merge(emp);
session.getTransaction().commit();
}
public static List<Employee> GetEmployeeList() {
Session session = HibDataSource.getSession();
session.beginTransaction();
List<Employee> list = session.createQuery("from Employee").list();
for (Employee employee : list) {
System.out.println(employee.getUsername());
}
session.getTransaction().commit();
return list;
}
public static void deleteEmp(long id) {
Session session = HibDataSource.getSession();
session.beginTransaction();
Employee emp = (Employee)session.get(Employee.class, id);
session.delete(emp);
session.getTransaction().commit();
}
}
HibDataSource.java
package com.hibcrud.utility;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibDataSource {
public static SessionFactory factory;
//Get Factory
public static SessionFactory getSessionFactory() {
if(factory == null) {
factory = new Configuration().configure().buildSessionFactory();
}
return factory;
}
//Get Session
public static Session getSession() {
Session session = getSessionFactory().openSession();
return session;
}
//Get Session
public static void closeSession(Session session) {
if (session != null) {
session.close();
}
}
}
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_tutorial</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping class="com.hibcrud.entity.Employee" />
</session-factory>
</hibernate-configuration>
web.xml
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <welcome-file-list> <welcome-file>AddEmpCtl</welcome-file> </welcome-file-list> </web-app>
Maven Dependencies (POM.XML)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>HibCrud</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>HibCrud Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.common</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>4.0.1.Final</version>
<classifier>tests</classifier>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.0.1.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>HibCrud</finalName>
</build>
</project>
