Quick Contact

    Hibernate

    Hibernate Java Configuration Example

    Here we will show you how to create a Hibernate Application using Java configuration without using hibernate.cfg.xml to connect the MySQL database.

    • ServiceRegistry holds the services that Hibernate will need during bootstrapping and at runtime.
    • StandardServiceRegistryBuilder – Builder for standard ServiceRegistry instances.
    • HibernateUtil – This is the helper class to bootstrap hibernate SessionFactory. In most Hibernate applications, the SessionFactory should be instantiated once during application initialization. The single instance should then be used by all code in a particular process, and any Session should be created using this single SessionFactory. The SessionFactory is thread-safe and can be shared; a Session is a single-threaded object.

    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-java-config-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)

    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 the 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, which 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 +"]";
        }
    }
    

    JPA annotations are used in mapping java objects to the database tables, columns, etc.

    JPA annotations that we are using in the Student entity:

    @Entity – This annotation specifies that the class is an entity.

    @Table – This annotation specifies the table in the database with which this entity is mapped.

    @Column – The @Column annotation is used to specify the mapping between a basic entity attribute and the database table column.

    @Id – This annotation specifies the primary key of the entity

    @GeneratedValue – This annotation specifies the generation strategies for the values of primary keys.

    Create a Hibernate configuration file – Java Configuration

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

    Let’s create a HibernateUtil file and write the following code in it.

    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 and database-related stuff.

    packagenet.ducatindia.hibernate.dao;
    
    importjava.util.List;
    
    importorg.hibernate.Session;
    importorg.hibernate.Transaction;
    
    importnet.ducatindia.hibernate.entity.Student;
    importnet.ducatindia.hibernate.util.HibernateUtil;
    
    publicclassStudentDao {
    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();
            }
        }
    
    publicList< Student>getStudents() {
    try (Sessionsession=HibernateUtil.getSessionFactory().openSession()) {
    returnsession.createQuery("from Student", Student.class).list();
            }
        }
    }
    

    Create the main App class and Run an Application

    Let’s test Hibernate application to connect MySQL database.

    packagenet.ducatindia.hibernate;
    
    importjava.util.List;
    
    importnet.ducatindia.hibernate.dao.StudentDao;
    importnet.ducatindia.hibernate.entity.Student;
    
    publicclassApp {
    publicstaticvoidmain(String[] args) {
    StudentDaostudentDao=newStudentDao();
    Studentstudent=newStudent("rajan", "sharma", "rajansharma@ducatindia.com");
    studentDao.saveStudent(student);
    
    List< Student> students =studentDao.getStudents();
    students.forEach(s ->System.out.println(s.getFirstName()));
        }
    }
    

    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.