Quick Contact

    Hibernate

    Hibernate 5 – get(), load() and byId() Method Examples

    Here we use Session.get(), Session.load() and Session.byId() methods to retrieve an entity from database.

    In Hibernate, an entity can be obtained from a database using the following Session methods –

    Session.get() →

    This method returns a persistence object of the given class with the given identifier. It will return null if there is no persistence object.

    Session.load() →

    This method returns a persistence object of the given class with the given identifier. It will throw an exception ObjectNotFoundException if an entity does not exist in the database. The load() method may return a proxy object instead of a real persistence object.

    Session.byId() →

    This method is used to obtain a persistence object by it a primary identifier.

    packagenet.ducatindia.hibernate.dao;
    
    importorg.hibernate.Session;
    importorg.hibernate.Transaction;
    
    importnet.ducatindia.hibernate.entity.Student;
    importnet.ducatindia.hibernate.util.HibernateUtil;
    
    public class StudentDao {
    public void getStudent(int id) {
            Transaction transaction = null;
    try (Session session = HibernateUtil.getSessionFactory().openSession()) {
                // start a transaction
    transaction = session.beginTransaction();
    
                // get Student entity using get() method
                Student student = session.get(Student.class, id);
    System.out.println(student.getFirstName());
    System.out.println(student.getEmail());
    
                // commit transaction
    transaction.commit();
            } catch (Exception e) {
    if (transaction != null) {
    transaction.rollback();
                }
    e.printStackTrace();
            }
        }
    
    public void loadStudent(int id) {
            Transaction transaction = null;
    try (Session session = HibernateUtil.getSessionFactory().openSession()) {
                // start a transaction
    transaction = session.beginTransaction();
    
                // get Student entity using load() method
                Student student = session.load(Student.class, id);
    System.out.println(student.getFirstName());
    System.out.println(student.getEmail());
    
                // commit transaction
    transaction.commit();
            } catch (Exception e) {
    if (transaction != null) {
    transaction.rollback();
                }
    e.printStackTrace();
            }
        }
    
    public void getStudentById(int id) {
            Transaction transaction = null;
    try (Session session = HibernateUtil.getSessionFactory().openSession()) {
                // start a transaction
    transaction = session.beginTransaction();
    
                // Obtain an entity using byId() method
                Student student = session.byId(Student.class).getReference(id);
    System.out.println(student.getFirstName());
    System.out.println(student.getEmail());
    
                // commit transaction
    transaction.commit();
            } catch (Exception e) {
    if (transaction != null) {
    transaction.rollback();
                }
    e.printStackTrace();
            }
        }
    
    public void saveStudent(Student student) {
            Transaction transaction = null;
    try (Session session = HibernateUtil.getSessionFactory().openSession()) {
                // start a transaction
    transaction = session.beginTransaction();
                // save the student object
    session.save(student);
                // commit transaction
    transaction.commit();
            } catch (Exception e) {
    if (transaction != null) {
    transaction.rollback();
                }
    e.printStackTrace();
            }
        }
    }
    

    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-get-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")
    public class Student {
    
        @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    privateint id;
    
    @Column(name = "first_name")
    private String firstName;
    
    @Column(name = "last_name")
    private String lastName;
    
    @Column(name = "email")
    private String email;
    
    public Student() {
    
        }
    
    public Student(String firstName, String lastName, String email) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.email = email;
        }
    
    publicintgetId() {
    return id;
        }
    
    public void setId(int id) {
            this.id = id;
        }
    
    public String getFirstName() {
    returnfirstName;
        }
    
    public void setFirstName(String firstName) {
    this.firstName = firstName;
        }
    
    public String getLastName() {
    returnlastName;
        }
    
    public void setLastName(String lastName) {
    this.lastName = lastName;
        }
    
    public String getEmail() {
    return email;
        }
    
    public void setEmail(String email) {
    this.email = email;
        }
    
        @Override
    public String toString() {
            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 StudentDao Class

    Let’s create a separate <StudentDao class to separate out hibernate related stuff.

    packagenet.ducatindia.hibernate.dao;
    
    importorg.hibernate.Session;
    importorg.hibernate.Transaction;
    
    importnet.ducatindia.hibernate.entity.Student;
    importnet.ducatindia.hibernate.util.HibernateUtil;
    
    publicclassStudentDao {
    publicvoidgetStudent(intid) {
    Transactiontransaction=null;
    try (Sessionsession=HibernateUtil.getSessionFactory().openSession()) {
    // start a transaction
    transaction=session.beginTransaction();
    
    // get Student entity using get() method
    Studentstudent=session.get(Student.class, id);
    System.out.println(student.getFirstName());
    System.out.println(student.getEmail());
    
    // commit transaction
    transaction.commit();
            } catch (Exception e) {
    if (transaction !=null) {
    transaction.rollback();
                }
    e.printStackTrace();
            }
        }
    
    publicvoidloadStudent(intid) {
    Transactiontransaction=null;
    try (Sessionsession=HibernateUtil.getSessionFactory().openSession()) {
    // start a transaction
    transaction=session.beginTransaction();
    
    // get Student entity using load() method
    Studentstudent=session.load(Student.class, id);
    System.out.println(student.getFirstName());
    System.out.println(student.getEmail());
    
    // commit transaction
    transaction.commit();
            } catch (Exception e) {
    if (transaction !=null) {
    transaction.rollback();
                }
    e.printStackTrace();
            }
        }
    
    publicvoidgetStudentById(intid) {
    Transactiontransaction=null;
    try (Sessionsession=HibernateUtil.getSessionFactory().openSession()) {
    // start a transaction
    transaction=session.beginTransaction();
    
    // Obtain an entity using byId() method
    Studentstudent=session.byId(Student.class).getReference(id);
    System.out.println(student.getFirstName());
    System.out.println(student.getEmail());
    
    // commit transaction
    transaction.commit();
            } catch (Exception e) {
    if (transaction !=null) {
    transaction.rollback();
                }
    e.printStackTrace();
            }
        }
    
    publicvoidsaveStudent(Studentstudent) {
    Transactiontransaction=null;
    try (Sessionsession=HibernateUtil.getSessionFactory().openSession()) {
    // start a transaction
    transaction=session.beginTransaction();
    // save the student object
    session.save(student);
    // commit transaction
    transaction.commit();
            } catch (Exception e) {
    if (transaction !=null) {
    transaction.rollback();
                }
    e.printStackTrace();
            }
        }
    }
    

    Note that in the above code, we have demonstrated the following methods:

    Session.get() →

    This method return a persistence object of the given class with the given identifier. It will return null if there is no persistence object.

    Session.load() →

    This method return a persistence object of the given class with the given identifier. It will throw an exception ObjectNotFoundException if an entity does not exist in the database. The load() method may return a proxy object instead of a real persistence object.

    .byId() →

    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.StudentDao;
    importnet.ducatindia.hibernate.entity.Student;
    
    publicclassApp {
    publicstaticvoidmain(String[] args) {
    
    StudentDaostudentDao=newStudentDao();
    
    Studentstudent=newStudent("Rajan", "Sharma", "ducatindia@ducatindia.com");
    Student student1 =newStudent("Ram", "mishra", "ram@ducatindia.com");
    Student student2 =newStudent("Shyam", "pandey", "shyam@ducatindia.com");
    studentDao.saveStudent(student);
    studentDao.saveStudent(student1);
    studentDao.saveStudent(student2);
    
    studentDao.getStudent(1);
    studentDao.loadStudent(2);
    studentDao.getStudentById(3);
        }
    }
    

    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.