com.imos.sample.util.HibernateUtil.java Source code

Java tutorial

Introduction

Here is the source code for com.imos.sample.util.HibernateUtil.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.imos.sample.util;

import java.util.List;
import lombok.extern.java.Log;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

/**
 *
 * @author INVCH018
 */
@Log
public class HibernateUtil {

    public static SessionFactory sessionFactory;
    public static SessionFactory sessionFactorySampleDB;
    public static SessionFactory sessionFactorySkillDB;
    public static Session session;
    public static String database;

    static {
        sessionFactory = configure();
    }

    private static SessionFactory configure() throws HibernateException {
        try {
            Configuration configuration;
            //            Configuration configuration = new Configuration()l
            ////                    .addAnnotatedClass(Person.class)
            ////                    .addAnnotatedClass(Address.class)
            //                    .addAnnotatedClass(UserDetailOTO.class)
            //                    .addAnnotatedClass(UserDetailOTM.class)
            //                    .addAnnotatedClass(UserDetailMTM.class)
            //                    .addAnnotatedClass(VehicleOTO.class)
            //                    .addAnnotatedClass(VehicleOTM.class)
            //                    .addAnnotatedClass(VehicleMTM.class)
            //                    //                    .setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver")
            //                    .setProperty("hibernate.connection.username", "root")
            //                    .setProperty("hibernate.connection.password", "invicara")
            //                    .setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/sampledb?autoReconnect=true&useSSL=false")
            //                    .setProperty("hibernate.connection.pool_size", "1")
            //                    .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect")
            //                    .setProperty("hibernate.show_sql", "true")
            //                    .setProperty("hibernate.hbm2ddl.auto", "update");
            //
            //            sessionFactory = configuration.buildSessionFactory();
            configuration = new Configuration().configure("hibernate_sampledb.cfg.xml");

            sessionFactorySampleDB = configuration.buildSessionFactory();

            //            configuration = new Configuration()
            //                    .configure("hibernate_skilldb.cfg.xml");
            //
            //            sessionFactorySkillDB = configuration.buildSessionFactory();
            sessionFactory = sessionFactorySampleDB;
        } catch (Exception e) {
            log.severe(e.getMessage());
            System.exit(0);
            return null;
        }
        return sessionFactory;
    }

    public static Session openConnection(String db) {
        if ("SampleDB".equals(db)) {
            sessionFactory = sessionFactorySampleDB;
        }
        if ("SkillDB".equals(db)) {
            sessionFactory = sessionFactorySkillDB;
        }
        if (session != null) {
            return session.isOpen() ? session : sessionFactory.openSession();
        } else {

        }
        return sessionFactory.openSession();
    }

    public static void closeConnection() {
        if (session != null && session.isOpen()) {
            session.close();
        }
        sessionFactory.close();
    }

    public static <T> List<T> createQuery(String query) {
        session = openConnection(database);
        return session.createQuery(query).list();
    }

    public static <T> void save(T... array) {
        if (session == null) {
            session = sessionFactory.openSession();
        }
        save(session, array);
    }

    public static <T> void save(Session session, T... array) {
        try {
            if (!session.isOpen()) {
                session = sessionFactory.openSession();
            }
            session.beginTransaction();
            for (int index = 0, n = array.length; index < n; index++) {
                session.save(array[index]);
            }
            session.getTransaction().commit();
            session.flush();
            log.info("SAVE Success");
        } catch (Exception e) {
            session.getTransaction().rollback();
            log.severe(e.getMessage());
            log.info("SAVE Failed");
        } finally {
            session.close();
        }
    }

    public static <T> void update(Session session, T obj) {
        try {
            if (!session.isOpen()) {
                session = sessionFactory.openSession();
            }
            session.beginTransaction();
            session.update(obj);
            session.getTransaction().commit();
            log.info("UPDATE Success");
        } catch (Exception e) {
            session.getTransaction().rollback();
            log.severe(e.getMessage());
        } finally {
            session.close();
        }
    }

    public static <T> void delete(Session session, T obj) {
        try {
            if (!session.isOpen()) {
                session = sessionFactory.openSession();
            }
            session.beginTransaction();
            session.delete(obj);
            session.getTransaction().commit();
            log.info("DELETE Success");
        } catch (Exception e) {
            session.getTransaction().rollback();
            log.severe(e.getMessage());
        } finally {
            session.close();
        }
    }

    public static SessionFactory getSessionFactory(String pdatabase) {
        database = pdatabase;
        return sessionFactory == null ? configure() : sessionFactory;
    }
}