Quick Contact

    Hibernate

    Hibernate 5 – load() Method Example

    In this page we will show you how to use Session.load() method to retrieve an entity from the database. In this article, we will create a simple Hibernate application using Java configuration without using hibernate.cfg.xml to demonstrates the usage of Session.load() method.

    Apart from using Session.load(), we can retrieve entity using Session.get() and Session.byId() methods.

    Overloaded load() methods

    publicObject load(ClasstheClass, Serializable id) throws HibernateException
    publicObject load(StringentityName, Serializable id) throws HibernateException
    publicvoid load(Objectobject, Serializable id) throws HibernateException
    
    1. The first method needs the class type which you would like to load along with a unique ID.
    2. The second method asks for entityName directly and unique ID. Both methods return the populated entity object as return value which you will cast to the desired type.
    3. Third takes an object as an argument. The object should be of the same class as the object you would like loaded, and it should be empty. Hibernate will populate that object with the object you requested.

    The other load() methods available through hibernate session take a lock mode as an argument too. The lock mode specifies whether Hibernate should look into the cache for the object and which database lock level Hibernate should use for the row (or rows) of data that represent this object.

    The following snippet demonstrates all flavors of load() methods: Note that the comments are self-descriptive.

    packagenet.ducatindia.hibernate;
    
    importorg.hibernate.Session;
    
    importnet.ducatindia.hibernate.entity.Student;
    importnet.ducatindia.hibernate.util.HibernateUtil;
    
    publicclassApp {
    publicstaticvoidmain(String[] args) {
    
    IntegerstudentId=1;
    /************************** Save Entity ***************************/
    SessionsessionOne=HibernateUtil.getSessionFactory().openSession();
    sessionOne.beginTransaction();
    
    // create new student object
    Studentstudent=newStudent("rajan", "Sharma", "rajansharma@ducatindia.com");
    
    // save student object to database
    sessionOne.save(student);
    sessionOne.getTransaction().commit();
    
    /*******************************************************************/
    
    //Let's open a new session to test load() methods
    SessionsessionTwo=HibernateUtil.getSessionFactory().openSession();
    sessionTwo.beginTransaction();
    
    //first load() method example
    Student student1 = (Student) sessionTwo.load(Student.class, studentId);
    System.out.println(student1.getFirstName() +" - "+ student1.getLastName());
    
    //Let's verify the entity name
    System.out.println(sessionTwo.getEntityName(student1));
    
    sessionTwo.getTransaction().commit();
    
    /************************************************************************/
    
    SessionsessionThree=HibernateUtil.getSessionFactory().openSession();
    sessionThree.beginTransaction();
    
    //second load() method example
    Student student2 = (Student) sessionThree.load("net.ducatindia.hibernate.entity.Student", studentId);
    System.out.println(student2.getFirstName() +" - "+ student2.getLastName());
    
    sessionThree.getTransaction().commit();
    
    /************************************************************************/
    
    SessionsessionFour=HibernateUtil.getSessionFactory().openSession();
    sessionFour.beginTransaction();
    
    //third load() method example
    Student student3 =newStudent();
    sessionFour.load(student3, studentId);
    System.out.println(student3.getFirstName() +" - "+ student3.getLastName());
    
    sessionFour.getTransaction().commit();
        }
    }
    

    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-load-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;
        }
    }
    

    Create the main App class and Run an Application

    Let’s test Hibernate application to connect MySQL database.

    packagenet.ducatindia.hibernate;
    
    importorg.hibernate.Session;
    
    importnet.ducatindia.hibernate.entity.Student;
    importnet.ducatindia.hibernate.util.HibernateUtil;
    
    publicclassApp {
    publicstaticvoidmain(String[] args) {
    
    IntegerstudentId=1;
    /************************** Save Entity ***************************/
    SessionsessionOne=HibernateUtil.getSessionFactory().openSession();
    sessionOne.beginTransaction();
    
    // create new student object
    Studentstudent=newStudent("Rajan", "Sharma", "rajansharma@ducatindia.com");
    
    // save student object to database
    sessionOne.save(student);
    sessionOne.getTransaction().commit();
    
    /*******************************************************************/
    
    //Let's open a new session to test load() methods
    SessionsessionTwo=HibernateUtil.getSessionFactory().openSession();
    sessionTwo.beginTransaction();
    
    //first load() method example
    Student student1 = (Student) sessionTwo.load(Student.class, studentId);
    System.out.println(student1.getFirstName() +" - "+ student1.getLastName());
    
    //Let's verify the entity name
    System.out.println(sessionTwo.getEntityName(student1));
    
    sessionTwo.getTransaction().commit();
    
    /************************************************************************/
    
    SessionsessionThree=HibernateUtil.getSessionFactory().openSession();
    sessionThree.beginTransaction();
    
    //second load() method example
    Student student2 = (Student) sessionThree.load("net.ducatindia.hibernate.entity.Student", studentId);
    System.out.println(student2.getFirstName() +" - "+ student2.getLastName());
    
    sessionThree.getTransaction().commit();
    
    /************************************************************************/
    
    SessionsessionFour=HibernateUtil.getSessionFactory().openSession();
    sessionFour.beginTransaction();
    
    //third load() method example
    Student student3 =newStudent();
    sessionFour.load(student3, studentId);
    System.out.println(student3.getFirstName() +" - "+ student3.getLastName());
    
    sessionFour.getTransaction().commit();
        }
    }
    

    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.