CRUD
Los comandos CRUD (Crear, Leer, Actualizar y Eliminar) en una sesión de Hibernate son:
Crear: Para crear un nuevo objeto persistente en Hibernate, primero debemos abrir una sesión y, a continuación, utilizar el método save() o persist() para guardar el objeto en la base de datos. El método save() devuelve el identificador del objeto persistente, mientras que el método persist() no devuelve nada. Ejemplo:
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
Person person = new Person("John", "Doe", 30);
Long personId = (Long) session.save(person); // or session.persist(person);
tx.commit();
session.close();
Leer: Para leer un objeto persistente en Hibernate, debemos abrir una sesión y utilizar el método get() o load() para obtener el objeto de la base de datos. El método get() devuelve el objeto persistente o null si no existe, mientras que el método load() devuelve una instancia del objeto persistente, aunque esta pueda estar inicialmente en estado "lazy". Ejemplo:
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
Person person = (Person) session.get(Person.class, 1L); // or session.load(Person.class, 1L);
tx.commit();
session.close();
Actualizar: Para actualizar un objeto persistente en Hibernate, primero debemos abrir una sesión y, a continuación, utilizar el método update() para realizar los cambios en el objeto. Si el objeto no existe en la base de datos, se lanzará una excepción. Ejemplo:
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
Person person = (Person) session.get(Person.class, 1L);
person.setAge(31);
session.update(person);
tx.commit();
session.close();
Eliminar: Para eliminar un objeto persistente en Hibernate, primero debemos abrir una sesión y, a continuación, utilizar el método delete() para eliminar el objeto de la base de datos. Si el objeto no existe en la base de datos, se lanzará una excepción. Ejemplo:
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
Person person = (Person) session.get(Person.class, 1L);
session.delete(person);
tx.commit();
session.close();
Estos son los principales comandos CRUD en una sesión de Hibernate.
import java.util.List;
import java.util.Date;
import java.util.Iterator;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class ManageEmployee {
private static SessionFactory factory;
public static void main(String[] args) {
try {
factory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Failed to create sessionFactory object." + ex);
throw new ExceptionInInitializerError(ex);
}
ManageEmployee ME = new ManageEmployee();
/* Add few employee records in database */
Integer empID1 = ME.addEmployee("Zara", "Ali", 1000);
Integer empID2 = ME.addEmployee("Daisy", "Das", 5000);
Integer empID3 = ME.addEmployee("John", "Paul", 10000);
/* List down all the employees */
ME.listEmployees();
/* Update employee's records */
ME.updateEmployee(empID1, 5000);
/* Delete an employee from the database */
ME.deleteEmployee(empID2);
/* List down new list of the employees */
ME.listEmployees();
}
/* Method to CREATE an employee in the database */
public Integer addEmployee(String fname, String lname, int salary){
Session session = factory.openSession();
Transaction tx = null;
Integer employeeID = null;
try {
tx = session.beginTransaction();
Employee employee = new Employee(fname, lname, salary);
employeeID = (Integer) session.save(employee);
tx.commit();
} catch (HibernateException e) {
if (tx!=null) tx.rollback();
e.printStackTrace();
} finally {
session.close();
}
return employeeID;
}
/* Method to READ all the employees */
public void listEmployees( ){
Session session = factory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
List employees = session.createQuery("FROM Employee").list();
for (Iterator iterator = employees.iterator(); iterator.hasNext();){
Employee employee = (Employee) iterator.next();
System.out.print("First Name: " + employee.getFirstName());
System.out.print(" Last Name: " + employee.getLastName());
System.out.println(" Salary: " + employee.getSalary());
}
tx.commit();
} catch (HibernateException e) {
if (tx!=null) tx.rollback();
e.printStackTrace();
} finally {
session.close();
}
}
/* Method to UPDATE salary for an employee */
public void updateEmployee(Integer EmployeeID, int salary ){
Session session = factory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
Employee employee = (Employee)session.get(Employee.class, EmployeeID);
employee.setSalary( salary );
session.update(employee);
tx.commit();
} catch (HibernateException e) {
if (tx!=null) tx.rollback();
e.printStackTrace();
} finally {
session.close();
}
}
/* Method to DELETE an employee from the records */
public void deleteEmployee(Integer EmployeeID){
Session session = factory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
Employee employee = (Employee)session.get(Employee.class, EmployeeID);
session.delete(employee);
tx.commit();
} catch (HibernateException e) {
if (tx!=null) tx.rollback();
e.printStackTrace();
} finally {
session.close();
}
}
}
Versión 6:
https://dev.to/realnamehidden1_61/hibernate-6-crud-operations-32o0