Unit V
Unit V
1. Setting up Environment
You need to set up the environment with the following tools and technologies:
1. Install JDK: Make sure you have JDK 8 or later installed on your machine.
2. Install MySQL: Download and install MySQL. You can also use a local MySQL database, or a cloud
service like AWS RDS or Azure Database.
3. Install IDE: You can use IntelliJ IDEA, Eclipse, or any preferred Java IDE.
---
2. Create a New Spring Boot Project
You can create a Spring Boot project either manually or by using Spring Initializr.
- Spring Web
- MySQL Driver
Steps:
import javax.persistence.*;
@Entity
@Table(name = "employees")
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
@Column(name = "first_name")
@Column(name = "last_name")
@Column(name = "email")
public Employee() {
Steps:
Create a DAO interface for defining CRUD methods.
Implement the DAO interface in a concrete class that uses
Hibernate to interact with the database.
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
return id;
this.id = id;
}
public String getFirstName() {
return firstName;
this.firstName = firstName;
return lastName;
this.lastName = lastName;
return email;
this.email = email;
}
Steps:
Create a DAO interface for defining CRUD methods.
Implement the DAO interface in a concrete class that uses
Hibernate to interact with the database.
import java.util.List;
List<Employee> getAllEmployees();
void updateEmployee(Employee employee);
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;
import java.util.List;
this.sessionFactory = sessionFactory;
}
@Override
session.beginTransaction();
session.saveOrUpdate(employee);
session.getTransaction().commit();
@Override
session.beginTransaction();
session.getTransaction().commit();
return employee;
}
@Override
session.beginTransaction();
session.getTransaction().commit();
return employees;
@Override
session.beginTransaction();
session.update(employee);
session.getTransaction().commit();
}
@Override
session.beginTransaction();
if (employee != null) {
session.delete(employee);
session.getTransaction().commit();
3. Creating Controller
In a typical Spring MVC application, the controller is responsible for
processing incoming HTTP requests and returning a response (usually a
view). In a Hibernate application, the controller interacts with the DAO
to manage data.
Steps:
Use annotations like @Controller or @RestController to
define the controller.
Inject the DAO or service layer.
Handle different HTTP methods (GET, POST, PUT, DELETE) for
CRUD operations.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Controller
@RequestMapping("/employees")
@Autowired
@GetMapping("/list")
model.addAttribute("employees", employees);
return "employee-list";
}
@GetMapping("/showFormForAdd")
model.addAttribute("employee", employee);
return "employee-form";
@PostMapping("/saveEmployee")
employeeDAO.saveEmployee(employee);
return "redirect:/employees/list";
@GetMapping("/showFormForUpdate")
return "employee-form";
@GetMapping("/delete")
employeeDAO.deleteEmployee(id);
return "redirect:/employees/list";
Steps:
<hibernate-configuration>
<session-factory>
<property
name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</propert
y>
<property
name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</p
roperty>
<property
name="hibernate.connection.url">jdbc:mysql://localhost:3306/your_db<
/property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">300</property>
<property name="hibernate.c3p0.max_statements">50</property>
<property
name="hibernate.c3p0.idle_test_period">3000</property>
<property
name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</propert
y>
<property
name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping class="com.example.Employee"/>
</session-factory>
</hibernate-configuration>
CRUD OPERATIONS :
<dependencies>
<dependency>
<groupId>org.hibernate.orm</groupId>
<artifactId>hibernate-core</artifactId>
<version>6.4.0.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-
java</artifactId>
<version>8.0.32</version>
</dependency>
<dependency>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-
api</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
Step 2: Configure Hibernate
package com.example.entity;
import jakarta.persistence.*;
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy =
GenerationType.IDENTITY)
private Long id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "email")
private String email;
@Override
public String toString() {
return "User [id=" + id + ", firstName="
+ firstName + ", lastName=" + lastName + ",
email=" + email + "]";
}
}
+-------------------+
| User |
+-------------------+
| id (PK) |
| first_name |
| last_name |
| email |
+-------------------+
package com.example.util;
import org.hibernate.SessionFactory;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import
org.hibernate.boot.registry.StandardServiceRegis
try;
import
org.hibernate.boot.registry.StandardServiceRegis
tryBuilder;
StandardServiceRegistryBuilder.destroy(registry)
;
}
}
}
return sessionFactory;
}
StandardServiceRegistryBuilder.destroy(registry)
;
}
}
}
package com.example.dao;
import com.example.entity.User;
import com.example.util.HibernateUtil;
import org.hibernate.Session;
import org.hibernate.Transaction;
import java.util.List;
package com.example;
import com.example.dao.UserDao;
import com.example.entity.User;
import com.example.util.HibernateUtil;
import java.util.List;
// Create
userDao.saveUser(new User("Ramesh",
"Fadatare", "[email protected]"));
userDao.saveUser(new User("Suresh",
"Kumar", "[email protected]"));
// Read
List<User> users = userDao.getUsers();
users.forEach(System.out::println);
// Update
User user = users.get(0);
user.setFirstName("Rameshwar");
userDao.updateUser(user);
// Delete
userDao.deleteUser(user.getId());
// Read
users = userDao.getUsers();
users.forEach(System.out::println);
// Shutdown Hibernate
HibernateUtil.shutdown();
}
}