sascha@3333: package de.intevation.flys.backend;
sascha@3333: 
sascha@3333: import org.apache.log4j.Logger;
sascha@3333: 
sascha@3333: import org.hibernate.Session;
sascha@3333: import org.hibernate.SessionFactory;
sascha@3333: 
sascha@3333: public class SedDBSessionHolder
sascha@3333: {
sascha@3333:     private static Logger log =
sascha@3333:         Logger.getLogger(SedDBSessionHolder.class);
sascha@3333: 
sascha@3333:     public static final ThreadLocal<Session> HOLDER =
sascha@3333:         new ThreadLocal<Session>() {
sascha@3333:             @Override
sascha@3333:             protected Session initialValue() {
sascha@3333:                 return create();
sascha@3333:             }
sascha@3333:         };
sascha@3333: 
sascha@3333:     private SedDBSessionHolder() {
sascha@3333:     }
sascha@3333: 
sascha@3333:     public synchronized static Session create() {
sascha@3333:         log.debug("create");
sascha@3333:         SessionFactory sessionFactory =
sascha@3333:             SessionFactoryProvider.getSedDBSessionFactory();
sascha@3333:         return sessionFactory.openSession();
sascha@3333:     }
sascha@3333: 
sascha@3333:     public static Session acquire() {
sascha@3333:         log.debug("acquire");
sascha@3333:         Session session = create();
sascha@3333:         HOLDER.set(session);
sascha@3333:         return session;
sascha@3333:     }
sascha@3333: 
sascha@3333:     public static void release() {
sascha@3333:         log.debug("release");
sascha@3333:         HOLDER.remove();
sascha@3333:     }
sascha@3333: }
sascha@3333: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :