From 6d084a2727175220e011bba437a2fe01fc8f1276 Mon Sep 17 00:00:00 2001 From: anttil <anttil> Date: Fri, 14 Dec 2012 08:00:50 +0000 Subject: [PATCH] BIS-294 / SP-440: Added FetchMode definitions to sample and metaproject DAOs to make database queries less complex (and thus, faster) SVN: 27930 --- .../server/dataaccess/db/AbstractGenericEntityDAO.java | 2 +- .../generic/server/dataaccess/db/MetaprojectDAO.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractGenericEntityDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractGenericEntityDAO.java index 31ad3f49952..d0cdbff064a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractGenericEntityDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractGenericEntityDAO.java @@ -107,7 +107,7 @@ public abstract class AbstractGenericEntityDAO<T extends IIdHolder> extends Abst criteria.add(Restrictions.eq("id", techId.getId())); for (String connection : connections) { - criteria.setFetchMode(connection, FetchMode.JOIN); + criteria.setFetchMode(connection, FetchMode.SELECT); } final T result = tryGetEntity(criteria.uniqueResult()); if (operationLog.isDebugEnabled()) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/MetaprojectDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/MetaprojectDAO.java index d6e04af76da..c4f51407518 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/MetaprojectDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/MetaprojectDAO.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.Set; import org.apache.log4j.Logger; +import org.hibernate.FetchMode; import org.hibernate.SessionFactory; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Order; @@ -124,6 +125,11 @@ public class MetaprojectDAO extends AbstractGenericEntityDAO<MetaprojectPE> impl criteria.createAlias("metaproject", "m"); criteria.add(Restrictions.eq("m.owner", owner)); criteria.add(Restrictions.eq(entity.getEntityKind().getLabel(), entity)); + criteria.setFetchMode("experiment", FetchMode.SELECT); + criteria.setFetchMode("dataSet", FetchMode.SELECT); + criteria.setFetchMode("material", FetchMode.SELECT); + criteria.setFetchMode("sample", FetchMode.SELECT); + final List<MetaprojectAssignmentPE> assignments = cast(getHibernateTemplate().findByCriteria(criteria)); -- GitLab