let us start using struts.\rand some fixes in the new persistence layer.
[mir.git] / source / mir / core / service / storage / StorageService.java
index fb81d7f..6a21d94 100755 (executable)
@@ -34,7 +34,9 @@ package mir.core.service.storage;
 
 import java.util.List;
 
+import mir.core.model.IImage;
 import net.sf.hibernate.Criteria;
+import net.sf.hibernate.Hibernate;
 import net.sf.hibernate.HibernateException;
 import net.sf.hibernate.Session;
 import net.sf.hibernate.SessionFactory;
@@ -45,7 +47,7 @@ import net.sf.hibernate.expression.Expression;
  * 
  * StorageService
  * @author idefix
- * @version $Id: StorageService.java,v 1.2 2003/08/19 00:42:38 idfx Exp $
+ * @version $Id: StorageService.java,v 1.3 2003/09/05 20:23:59 idfx Exp $
  */
 public abstract class StorageService {
        private Class objectClass;
@@ -73,6 +75,7 @@ public abstract class StorageService {
                                .setMaxResults(limit);
                        List returnList = criteria.list();
                        transaction.commit();
+                       sessionHolder.closeSession();
                        return returnList;
                } catch (HibernateException e) {
                        throw new StorageServiceFailure(e);
@@ -84,13 +87,21 @@ public abstract class StorageService {
                        Session session = sessionHolder.currentSession();
                        Transaction transaction = session.beginTransaction();
                        Object returnObject = session.load(objectClass, id);
+                       initializeLazyCollections(returnObject);
                        transaction.commit();
+                       sessionHolder.closeSession();
                        return returnObject;
                } catch (HibernateException e) {
                        throw new StorageServiceFailure(e);
                }       
        }
        
+       /**
+        * @param returnObject
+        */
+       protected abstract void initializeLazyCollections(Object returnObject) 
+               throws HibernateException;
+       
        public Integer add(Object newObject){
                try {
                        Session session = sessionHolder.currentSession();