com.imos.hibernate.utils.HibernateUtils.java Source code

Java tutorial

Introduction

Here is the source code for com.imos.hibernate.utils.HibernateUtils.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.hibernate.utils;

import java.util.List;
import java.util.logging.Level;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.java.Log;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

/**
 *
 * @author Alok
 */
@Log
public class HibernateUtils {

    private static HibernateUtils instance;

    @Setter
    @Getter
    private Database database;

    @Getter
    private SessionFactory sessionFactory;
    private SessionFactory sampleDBsessionFactory;
    private SessionFactory skillDBsessionFactory;
    @Getter
    private Session session;

    private HibernateUtils() {
        sampleDBsessionFactory = new Configuration().configure("hibernate_sampledb.cfg.xml").buildSessionFactory();
        //        skillDBsessionFactory = new Configuration().configure("hibernate_skilldb.cfg.xml").buildSessionFactory();
        //        sessionFactory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
    }

    public static HibernateUtils getInstance() {
        if (instance == null) {
            try {
                instance = new HibernateUtils();
            } catch (Exception e) {
                e.printStackTrace();
            }

        }

        return instance;
    }

    public Session openSession() {
        assignDatabase();
        if (session == null) {
            session = sessionFactory.openSession();
        }
        if (!session.isOpen()) {
            session = sessionFactory.openSession();
        }
        return session;
    }

    private void assignDatabase() {
        switch (database) {
        case SAMPLE_DB:
            sessionFactory = sampleDBsessionFactory;
            break;
        case SKILL_DB:
            sessionFactory = skillDBsessionFactory;
            break;
        }
    }

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

    public void closeConnection() {
        sessionFactory.close();
        sampleDBsessionFactory.close();
        //        skillDBsessionFactory.close();
        //        sessionFactory.close();
    }

    public List executeQuery(String query) {
        session = openSession();
        List list = session.createQuery(query).list();
        closeSession();
        return list;
    }

    public <T> void save(T... objs) {
        session = openSession();

        try {
            session.beginTransaction();
            for (T obj : objs) {
                session.save(obj);
            }
            session.getTransaction().commit();
            log.info("SAVE Successfull");
        } catch (Exception e) {
            session.getTransaction().rollback();
            log.log(Level.INFO, "SAVE Failure {0}", e.getMessage());
            e.printStackTrace();
        } finally {
            closeSession();
        }
    }
}