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