Quick Contact

    Hibernate

    Hibernate 5 – Delete or Remove an Entity Example

    In Hibernate, an entity can be removed from a database by calling the Session.delete() or Session.remove(). Using these methods, we can remove a transient or persistent object from datastore.

    The following snappits or examples demonstrate the use of Session.delete() and Session.remove() methods.

    Session.delete(Object object) Method

    Remove a persistent instance from the datastore. The argument may be an instance associated with the receiving Session or a transient instance with an identifier associated with existing persistent state. This operation cascades to associated instances if the association is mapped with cascade=”delete”.

    Add jar Dependencies to 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/xsd/maven-4.0.0.xsd">
    < modelVersion>4.0.0< /modelVersion>
    < parent>
    < groupId>net.ducatindia.hibernate< /groupId>
    < artifactId>hibernate-tutorial< /artifactId>
    < version>0.0.1-SNAPSHOT< /version>
    < /parent>
    < artifactId>hibernate-remove-entity-example< /artifactId>
    < properties>
    < project.build.sourceEncoding>UTF-8< /project.build.sourceEncoding>
    < /properties>
    < dependencies>
    < !-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    < dependency>
    < groupId>mysql< /groupId>
    < artifactId>mysql-connector-java< /artifactId>
    < version>8.0.13< /version>
    < /dependency>
    < !-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
    < dependency>
    < groupId>org.hibernate< /groupId>
    < artifactId>hibernate-core< /artifactId>
    < version>5.3.7.Final< /version>
    < /dependency>
    < /dependencies>
    < build>
    < sourceDirectory>src/main/java< /sourceDirectory>
    < plugins>
    < plugin>
    < artifactId>maven-compiler-plugin< /artifactId>
    < version>3.5.1< /version>
    < configuration>
    < source>1.8< /source>
    < target>1.8< /target>
    < /configuration>
    < /plugin>
    < /plugins>
    < /build>
    < /project>
    

    Creating the JPA Entity Class(Persistent class)

    A simple Persistent class should follow some rules:

    • A no-arg constructor:

      It is recommended that you have a default constructor at least package visibility so that hibernate can create the instance of the Persistent class by newInstance() method.

    • Provide an identifier property:

      It is better to assign an attribute as id. This attribute behaves as a primary key in a database.

    • Declare getter and setter methods:

      The Hibernate recognizes the method by getter and setter method names by default.

    • Prefer non-final class:

      Hibernate uses the concept of proxies, that depends on the persistent class. The application programmer will not be able to use proxies for lazy association fetching.

    Create a Student entity class under net.javaguides.hibernate.entity package as follows.

    packagenet.ducatindia.hibernate.entity;
    
    importjavax.persistence.Column;
    importjavax.persistence.Entity;
    importjavax.persistence.GeneratedValue;
    importjavax.persistence.GenerationType;
    importjavax.persistence.Id;
    importjavax.persistence.Table;
    
    @Entity
    @Table(name="student")
    publicclassStudent {
    
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="id")
    privateint id;
    
    @Column(name="first_name")
    privateStringfirstName;
    
    @Column(name="last_name")
    privateStringlastName;
    
    @Column(name="email")
    privateString email;
    
    publicStudent() {
    
        }
    
    publicStudent(StringfirstName, StringlastName, Stringemail) {
    this.firstName=firstName;
    this.lastName=lastName;
    this.email= email;
        }
    
    publicintgetId() {
    return id;
        }
    
    publicvoidsetId(intid) {
    this.id = id;
        }
    
    publicStringgetFirstName() {
    returnfirstName;
        }
    
    publicvoidsetFirstName(StringfirstName) {
    this.firstName=firstName;
        }
    
    publicStringgetLastName() {
    returnlastName;
        }
    
    publicvoidsetLastName(StringlastName) {
    this.lastName=lastName;
        }
    
    publicStringgetEmail() {
    return email;
        }
    
    publicvoidsetEmail(Stringemail) {
    this.email= email;
        }
    
    @Override
    publicStringtoString() {
    return"Student [id="+ id +", firstName="+firstName+", lastName="+lastName+", email="+ email +"]";
        }
    }
    

    Create a Hibernate configuration file – Java Configuration

    The HibernateUtil Java configuration file contains information about the database and mapping file.

    HibernateUtil is a helper class to bootstrap hibernate SessionFactory.Add the Student entity to MetadataSources for mapping.

    packagenet.ducatindia.hibernate.util;
    
    importjava.util.Properties;
    
    importorg.hibernate.SessionFactory;
    importorg.hibernate.boot.registry.StandardServiceRegistryBuilder;
    importorg.hibernate.cfg.Configuration;
    importorg.hibernate.cfg.Environment;
    importorg.hibernate.service.ServiceRegistry;
    
    importnet.ducatindia.hibernate.entity.Student;
    
    publicclassHibernateUtil {
    privatestaticSessionFactorysessionFactory;
    publicstaticSessionFactorygetSessionFactory() {
    if (sessionFactory==null) {
    try {
    Configurationconfiguration=newConfiguration();
    
    // Hibernate settings equivalent to hibernate.cfg.xml's properties
    Properties settings =newProperties();
    settings.put(Environment.DRIVER, "com.mysql.cj.jdbc.Driver");
    settings.put(Environment.URL, "jdbc:mysql://localhost:3306/hibernate_db?useSSL=false");
    settings.put(Environment.USER, "root");
    settings.put(Environment.PASS, "root");
    settings.put(Environment.DIALECT, "org.hibernate.dialect.MySQL5Dialect");
    
    settings.put(Environment.SHOW_SQL, "true");
    
    settings.put(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread");
    
    settings.put(Environment.HBM2DDL_AUTO, "create-drop");
    
    configuration.setProperties(settings);
    
    configuration.addAnnotatedClass(Student.class);
    
    ServiceRegistryserviceRegistry=newStandardServiceRegistryBuilder()
                        .applySettings(configuration.getProperties()).build();
    
    sessionFactory=configuration.buildSessionFactory(serviceRegistry);
                } catch (Exception e) {
    e.printStackTrace();
                }
            }
    returnsessionFactory;
        }
    }
    

    Removing an entity using delete() method

    The following example deletes transient and persistent objects from datastore using Session.delete() method.

    packagenet.ducatindia.hibernate.dao;
    
    importorg.hibernate.Session;
    importorg.hibernate.Transaction;
    
    importnet.ducatindia.hibernate.entity.Student;
    importnet.ducatindia.hibernate.util.HibernateUtil;
    
    publicclassSessionDeleteExample {
    publicvoiddeleteStudent(intid) {
    Transactiontransaction=null;
    try (Sessionsession=HibernateUtil.getSessionFactory().openSession()) {
    // start a transaction
    transaction=session.beginTransaction();
    
    // Delete a persistent object
    Studentstudent=session.get(Student.class, id);
    if (student !=null) {
    session.delete(student);
    System.out.println("student 1 is deleted");
                }
    
    // Delete a transient object
    Student student2 =newStudent();
    student2.setId(2);
    session.delete(student2);
    System.out.println("Student 2 is deleted");
    
    // commit transaction
    transaction.commit();
            } catch (Exception e) {
    if (transaction !=null) {
    transaction.rollback();
                }
    e.printStackTrace();
            }
        }
    }
    

    Removing an entity using remove() method

    The following example deletes transient and persistent objects from datastore using Session.remove() method.

    packagenet.ducatindia.hibernate.dao;
    
    importorg.hibernate.Session;
    importorg.hibernate.Transaction;
    
    importnet.ducatindia.hibernate.entity.Student;
    importnet.ducatindia.hibernate.util.HibernateUtil;
    
    publicclassSessionRemoveExample {
    publicvoidremoveStudent(intid) {
    Transactiontransaction=null;
    try (Sessionsession=HibernateUtil.getSessionFactory().openSession()) {
    // start a transaction
    transaction=session.beginTransaction();
    
    // Delete a persistent object
    Studentstudent=session.get(Student.class, id);
    if (student !=null) {
    session.remove(student);
    System.out.println("student 1 is deleted");
                }
    
    // Delete a transient object
    Student student2 =newStudent();
    student2.setId(2);
    session.remove(student2);
    System.out.println("Student 2 is deleted");
    
    // commit transaction
    transaction.commit();
            } catch (Exception e) {
    if (transaction !=null) {
    transaction.rollback();
                }
    e.printStackTrace();
            }
        }
    }
    

    Create the main App class and Run an Application

    Let’s test Hibernate application to connect MySQL database.

    packagenet.ducatindia.hibernate;
    
    importnet.ducatindia.hibernate.dao.SessionDeleteExample;
    importnet.ducatindia.hibernate.dao.SessionRemoveExample;
    importnet.ducatindia.hibernate.dao.SessionSaveExample;
    importnet.ducatindia.hibernate.entity.Student;
    
    publicclassApp {
    publicstaticvoidmain(String[] args) {
    
    // first save few records to database
    SessionSaveExamplestudentDao=newSessionSaveExample();
    Student s1 =newStudent("Rajan", "Mishra", "rajanmishra@ducatindia.com");
    Student s2 =newStudent("Ram", "Mishra", "rammishra@ducatindia.com");
    studentDao.saveStudent(s1);
    studentDao.saveStudent(s2);
    
    // delete student
    SessionDeleteExampledeleteExample=newSessionDeleteExample();
    deleteExample.deleteStudent(1);
    
    // delete second student
    SessionRemoveExamplepersistExample=newSessionRemoveExample();
    persistExample.removeStudent(2);
        }
    }
    

    Apply now for Advanced Java Training Course

    Copyright 1999- Ducat Creative, All rights reserved.

    Anda bisa mendapatkan server slot online resmi dan terpercaya tentu saja di sini. Sebagai salah satu provider yang menyediakan banyak pilihan permainan.