Package com.zycus.dotproject.persistence.db.hibernate

Source Code of com.zycus.dotproject.persistence.db.hibernate.BaseHibernateDataHandler

package com.zycus.dotproject.persistence.db.hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

public abstract class BaseHibernateDataHandler {

  public static enum DBActionCriteria {
    Add, Update, Delete, Merge
  }

  public void performDBAction(Object objToSave, String criteria) {
    Transaction transaction = null;
    SessionFactory sessionFactory = null;
    Session session = null;

    try {
      sessionFactory = HibernateSessionFactory.getInstance();
      session = sessionFactory.openSession();
      transaction = session.beginTransaction();

      if (criteria.equalsIgnoreCase("Add") || criteria.equalsIgnoreCase("Update")) {
        session.saveOrUpdate(objToSave);
      } else if (criteria.equalsIgnoreCase("Delete")) {
        session.delete(objToSave);
      }

//      transaction.commit();

    } catch (Exception a_th) {
      if (transaction != null) {
        transaction.rollback();
      }
      throw new RuntimeException(a_th);
    } finally {
      close(sessionFactory, session);
    }
  }
 
  public Object merge(Object objToSave) {

    SessionFactory sessionFactory = null;
    Session session = null;

    try {
      sessionFactory = HibernateSessionFactory.getInstance();
      session = sessionFactory.openSession();
      Object mergedObject = session.merge(objToSave);
      return mergedObject;

    } catch (Exception a_th) {
      throw new RuntimeException(a_th);
    } finally {
      close(sessionFactory, session);
    }
  }

  public void performDBAction(Object objToSave, DBActionCriteria criteria) {

    SessionFactory sessionFactory = null;
    Session session = null;

    try {
      sessionFactory = HibernateSessionFactory.getInstance();
      session = sessionFactory.openSession();
      performDBAction(objToSave, criteria, session);

    } catch (Exception a_th) {
      throw new RuntimeException(a_th);
    } finally {
      close(sessionFactory, session);
    }
  }

  public void performDBAction(Object objToSave, DBActionCriteria criteria, Session session) {

    Transaction transaction = null;

    try {
      transaction = session.beginTransaction();

      if (criteria == DBActionCriteria.Add || criteria == DBActionCriteria.Update) {
        session.saveOrUpdate(objToSave);
      }else if (criteria == DBActionCriteria.Merge) {
        session.merge(objToSave);
      }else if (criteria == DBActionCriteria.Delete) {
        session.delete(objToSave);
      }
     
      session.flush();

      transaction.commit();

    } catch (Exception a_th) {
      if (transaction != null) {
        transaction.rollback();
      }
      throw new RuntimeException(a_th);
    }
  }

  public static void close(SessionFactory sessionFactory) {
    close(sessionFactory, null);
  }

  public static void close(SessionFactory sessionFactory, Session session) {
    if (session != null) {
      session.close();
    }
    if (sessionFactory != null) {
      sessionFactory.close();
    }
  }

  public static void close(Session session) {
    close(null, session);
  }
}
TOP

Related Classes of com.zycus.dotproject.persistence.db.hibernate.BaseHibernateDataHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.