Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * To change this template, choose Tools | Templates
   * and open the template in the editor.
   */
  package pt.webdetails.cda.utils;
  
  
  import  org.apache.commons.logging.Log;
  import  org.apache.commons.logging.LogFactory;
 import  org.hibernate.HibernateException;
 import  org.hibernate.Session;
 import  org.hibernate.SessionFactory;
 import  org.hibernate.Transaction;
 import  org.hibernate.cfg.Configuration;
 import  org.pentaho.platform.repository.hibernate.HibernateUtil;

Author(s):
pedro
 
 public class PluginHibernateUtil
 {
 
   private static final Log logger = LogFactory.getLog(PluginHibernateUtil.class);
   private static Configuration configuration;
   private static SessionFactory sessionFactory;
   private static final byte[] lock = new byte[0];
   private static final ThreadLocal<Session> threadSession = new ThreadLocal<Session>();
   private static final ThreadLocal<Transaction> threadTransaction = new ThreadLocal<Transaction>();
 
 
   public PluginHibernateUtil()
   {
   }
 
 
   public static boolean initialize()
   {
 
     .debug("Initializing PluginHibernate");
 
 
     // Start our own hibernate session, copying everything from the original
      = new Configuration();
     .setProperties(HibernateUtil.getConfiguration().getProperties());
 
      = .buildSessionFactory();
 
     return true;
 
 
   }


  
Returns the SessionFactory used for this static class.

Returns:
SessionFactory
 
   public static SessionFactory getSessionFactory()
   {
 
 
   }


  
Returns the original Hibernate configuration.

Returns:
Configuration
 
   public static Configuration getConfiguration()
   {
   }


  
Rebuild the SessionFactory with the static Configuration.
 
   public static void rebuildSessionFactory() throws PluginHibernateException
   {
 
     synchronized (.)
     {
       try
       {
         
         ClassLoader contextCL = Thread.currentThread().getContextClassLoader();
         try
         {
           . = PluginHibernateUtil.getConfiguration().buildSessionFactory();
         }
         catch (Exception e)
         {
          .error("Unexpected exception while setting class loader or building SessionFactory"e);
          throw e;
        }
        finally
        {
          Thread.currentThread().setContextClassLoader(contextCL);
        }              
        
      }
      catch (Exception ex)
      {
        .warn("Error building session factory " + Util.getExceptionDescription(ex)); //$NON-NLS-1$
        throw new PluginHibernateException("Error building session factory"ex); //$NON-NLS-1$
      }
    }
  }


  
Retrieves the current Session local to the thread.

If no Session is open, opens a new Session for the running thread.

Returns:
Session
  public static synchronized Session getSession() throws PluginHibernateException
  {
    Session s = (Session) ..get();
    try
    {
      if (s == null || !s.isOpen())
      {
        s = PluginHibernateUtil.getSessionFactory().openSession();
      }
    }
    catch (HibernateException ex)
    {
      .warn("Error creating session " + Util.getExceptionDescription(ex)); //$NON-NLS-1$
      throw new PluginHibernateException("Error creating session"ex); //$NON-NLS-1$
    }
    
    return s;
  }
  public static void flushSession() throws PluginHibernateException
  {
    try
    {
      Session s = PluginHibernateUtil.getSession();
      s.flush();
    }
    catch (HibernateException ex)
    {
      .warn("Error flushing session " + Util.getExceptionDescription(ex)); //$NON-NLS-1$
      throw new PluginHibernateException("Error flushing session"ex); //$NON-NLS-1$
    }
  }


  
Closes the Session local to the thread.
  public static synchronized void closeSession() throws PluginHibernateException
  {
    try
    {
      Session s = (Session) ..get();
      ..set(null);
      if ((s != null) && s.isOpen())
      {
        s.close();
      }
    }
    catch (HibernateException ex)
    {
      .warn("Error closing session " + Util.getExceptionDescription(ex)); //$NON-NLS-1$
      throw new PluginHibernateException("Error closing session"ex); //$NON-NLS-1$
    }
  }
New to GrepCode? Check out our FAQ X