[jboss-cvs] jboss-portal/cms/src/main/org/jboss/portal/cms/hibernate/state ...

Julien Viet julien at jboss.com
Mon Jul 31 17:43:03 EDT 2006


  User: julien  
  Date: 06/07/31 17:43:03

  Modified:    cms/src/main/org/jboss/portal/cms/hibernate/state 
                        HibernatePersistenceManager.java
  Log:
  - add CacheableBlobUserType
  - make the jackrabbit PM use CacheableUserType to avoid 10000 request per page view to the DB
  
  Revision  Changes    Path
  1.25      +39 -28    jboss-portal/cms/src/main/org/jboss/portal/cms/hibernate/state/HibernatePersistenceManager.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: HibernatePersistenceManager.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-portal/cms/src/main/org/jboss/portal/cms/hibernate/state/HibernatePersistenceManager.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -b -r1.24 -r1.25
  --- HibernatePersistenceManager.java	17 Jul 2006 13:11:25 -0000	1.24
  +++ HibernatePersistenceManager.java	31 Jul 2006 21:43:03 -0000	1.25
  @@ -25,6 +25,7 @@
   import java.io.File;
   import java.io.InputStream;
   import java.sql.SQLException;
  +import java.sql.Blob;
   import java.util.Iterator;
   import java.util.List;
   
  @@ -59,6 +60,7 @@
   import org.jboss.portal.cms.hibernate.HibernateStoreConstants;
   import org.jboss.portal.cms.util.HibernateUtil;
   import org.jboss.portal.common.util.Tools;
  +import org.jboss.portal.jems.hibernate.CacheableBlobUserType;
   
   /**
    * @author <a href="mailto:roy at jboss.org">Roy Russo</a>
  @@ -116,6 +118,8 @@
   
      protected String blobSelectExist;
   
  +   protected String nodeBinValSelect;
  +
      /**
       * file system where BLOB data is stored
       * (if <code>externalBLOBs==true</code>)
  @@ -152,6 +156,8 @@
   
         hibernateSessionFactory = HibernateUtil.getSessionFactory(jndiName);
   
  +      nodeBinValSelect = "from " + schemaObjectPrefix + "BinVal where BINVAL_ID = ?";
  +
         nodeStateSelect = "from " + schemaObjectPrefix + "Node where NODE_ID = ?";
         nodeStateSelectData = "select data from " + schemaObjectPrefix + "Node where NODE_ID = ?";
         nodeStateSelectExist = "select 1 from " + schemaObjectPrefix + "Node where NODE_ID = ?";
  @@ -164,6 +170,7 @@
         nodeReferenceSelectData = "select data from " + schemaObjectPrefix + "Refs where NODE_ID = ?";
         nodeReferenceSelectExist = "select 1 from " + schemaObjectPrefix + "Refs where NODE_ID = ?";
   
  +
         if (externalBLOBs)
         {
            /**
  @@ -418,7 +425,7 @@
         InputStream in = null;
         try
         {
  -         List rs = session.createQuery(propertyStateSelectData).setString(0, id.toString()).list();
  +         List rs = session.createQuery(propertyStateSelectData).setCacheable(true).setString(0, id.toString()).list();
            Iterator iter = rs.iterator();
            java.sql.Blob blob = (java.sql.Blob) iter.next();
            in = blob.getBinaryStream();
  @@ -460,7 +467,7 @@
         InputStream in = null;
         try
         {
  -         List rs = session.createQuery(nodeReferenceSelectData).setString(0, targetId.toString()).list();
  +         List rs = session.createQuery(nodeReferenceSelectData).setCacheable(true).setString(0, targetId.toString()).list();
            Iterator iter = rs.iterator();
            if (!iter.hasNext())
            {
  @@ -507,13 +514,13 @@
            Serializer.serialize(state, out);
            if (schemaObjectPrefix.equalsIgnoreCase(HibernateStoreConstants.versionPrefix))
            {
  -            VersionNode versionNode = new VersionNode(state.getId().toString(), Hibernate.createBlob(out.toByteArray()));
  +            VersionNode versionNode = new VersionNode(state.getId().toString(), createBlob(out.toByteArray()));
               session.save(versionNode);
            }
            else if (schemaObjectPrefix.equalsIgnoreCase(HibernateStoreConstants.wspPrefix))
            {
   
  -            WSPNode wspNode = new WSPNode(state.getId().toString(), Hibernate.createBlob(out.toByteArray()));
  +            WSPNode wspNode = new WSPNode(state.getId().toString(), createBlob(out.toByteArray()));
               session.save(wspNode);
            }
         }
  @@ -537,6 +544,12 @@
   
      }
   
  +   private Blob createBlob(byte[] bytes)
  +   {
  +      // return Hibernate.createBlob(bytes);
  +      return new CacheableBlobUserType.ByteArrayBlob(bytes);
  +   }
  +
      private void store(NodeReferences refs) throws ItemStateException
      {
         if (!initialized)
  @@ -554,14 +567,14 @@
            if (schemaObjectPrefix.equalsIgnoreCase(HibernateStoreConstants.versionPrefix))
            {
   
  -            VersionRefs versionRefs = new VersionRefs(refs.getTargetId().toString(), Hibernate.createBlob(out
  +            VersionRefs versionRefs = new VersionRefs(refs.getTargetId().toString(), createBlob(out
                     .toByteArray()));
               session.save(versionRefs);
            }
            else if (schemaObjectPrefix.equalsIgnoreCase(HibernateStoreConstants.wspPrefix))
            {
   
  -            WSPRefs wspRefs = new WSPRefs(refs.getTargetId().toString(), Hibernate.createBlob(out.toByteArray()));
  +            WSPRefs wspRefs = new WSPRefs(refs.getTargetId().toString(), createBlob(out.toByteArray()));
               session.save(wspRefs);
            }
         }
  @@ -611,12 +624,12 @@
   
            if (schemaObjectPrefix.equalsIgnoreCase(HibernateStoreConstants.versionPrefix))
            {
  -            VersionProp versionProp = new VersionProp(state.getId().toString(), Hibernate.createBlob(out.toByteArray()));
  +            VersionProp versionProp = new VersionProp(state.getId().toString(), createBlob(out.toByteArray()));
               session.save(versionProp);
            }
            else if (schemaObjectPrefix.equalsIgnoreCase(HibernateStoreConstants.wspPrefix))
            {
  -            WSPProp wspProp = new WSPProp(state.getId().toString(), Hibernate.createBlob(out.toByteArray()));
  +            WSPProp wspProp = new WSPProp(state.getId().toString(), createBlob(out.toByteArray()));
               session.save(wspProp);
            }
         }
  @@ -655,7 +668,7 @@
         {
            Serializer.serialize(state, out);
   
  -         Query query = session.createQuery(nodeStateSelect);
  +         Query query = session.createQuery(nodeStateSelect).setCacheable(true);
            if (schemaObjectPrefix.equalsIgnoreCase(HibernateStoreConstants.versionPrefix))
            {
               query.setString(0, state.getId().toString());
  @@ -664,7 +677,7 @@
               {
                  throw new Exception("No such Node: " + state.getId());
               }
  -            versionNode.setData(Hibernate.createBlob(out.toByteArray()));
  +            versionNode.setData(createBlob(out.toByteArray()));
            }
            else if (schemaObjectPrefix.equalsIgnoreCase(HibernateStoreConstants.wspPrefix))
            {
  @@ -674,7 +687,7 @@
               {
                  throw new Exception("No such Node: " + state.getId());
               }
  -            wspNode.setData(Hibernate.createBlob(out.toByteArray()));
  +            wspNode.setData(createBlob(out.toByteArray()));
            }
         }
         catch (Exception e)
  @@ -712,7 +725,7 @@
         {
            Serializer.serialize(state, out, blobStore);
   
  -         Query query = session.createQuery(propertyStateSelect);
  +         Query query = session.createQuery(propertyStateSelect).setCacheable(true);
            if (schemaObjectPrefix.equalsIgnoreCase(HibernateStoreConstants.versionPrefix))
            {
               query.setString(0, state.getId().toString());
  @@ -721,7 +734,7 @@
               {
                  throw new Exception("No such Property: " + state.getId());
               }
  -            versionProp.setData(Hibernate.createBlob(out.toByteArray()));
  +            versionProp.setData(createBlob(out.toByteArray()));
            }
            else if (schemaObjectPrefix.equalsIgnoreCase(HibernateStoreConstants.wspPrefix))
            {
  @@ -731,7 +744,7 @@
               {
                  throw new Exception("No such Property: " + state.getId());
               }
  -            wspProp.setData(Hibernate.createBlob(out.toByteArray()));
  +            wspProp.setData(createBlob(out.toByteArray()));
            }
         }
         catch (Exception e)
  @@ -767,8 +780,10 @@
         Session session = hibernateSessionFactory.getCurrentSession();
         try
         {
  -         Query query = session.createQuery("from " + schemaObjectPrefix + "Node where NODE_ID = ?").setString(0,
  -               state.getId().toString());
  +         Query query = session.
  +            createQuery(nodeStateSelect).
  +            setCacheable(true).
  +            setString(0, state.getId().toString());
            Object result = query.uniqueResult();
            if (result != null)
            {
  @@ -827,7 +842,7 @@
   
         try
         {
  -         Query query = session.createQuery("from " + schemaObjectPrefix + "Prop where PROP_ID = ?").setString(0,
  +         Query query = session.createQuery(propertyStateSelect).setCacheable(true).setString(0,
                  state.getId().toString());
            Object result = query.uniqueResult();
            if (result != null)
  @@ -858,7 +873,7 @@
         Session session = hibernateSessionFactory.getCurrentSession();
         try
         {
  -         Query query = session.createQuery("from " + schemaObjectPrefix + "Refs where NODE_ID = ?").setString(0,
  +         Query query = session.createQuery(nodeReferenceSelect).setCacheable(true).setString(0,
                  refs.getTargetId().toString());
            Object result = query.uniqueResult();
            if (result != null)
  @@ -922,13 +937,9 @@
         Session session = hibernateSessionFactory.openSession();
         try
         {
  -         List rs = session.createQuery(query).setString(0, id.toString()).list();
  +         List rs = session.createQuery(query).setCacheable(true).setString(0, id).list();
            Iterator iter = rs.iterator();
  -         if (iter.hasNext())
  -         {
  -            return true;
  -         }
  -         return false;
  +         return iter.hasNext();
         }
         catch (Exception e)
         {
  @@ -959,6 +970,7 @@
      //--------------------------------------------------------< inner classes >
      class DbBLOBStore implements BLOBStore
      {
  +
         /**
          *
          */
  @@ -981,7 +993,7 @@
            Session session = hibernateSessionFactory.getCurrentSession();
            try
            {
  -            List rs = session.createQuery(blobSelectData).setString(0, blobId).list();
  +            List rs = session.createQuery(blobSelectData).setCacheable(true).setString(0, blobId).list();
               Iterator iter = rs.iterator();
               java.sql.Blob blob = (java.sql.Blob) iter.next();
               InputStream is = blob.getBinaryStream();
  @@ -1013,7 +1025,7 @@
               try
               {
   
  -               Query query = session.createQuery(blobSelect);
  +               Query query = session.createQuery(blobSelect).setCacheable(true);
                  if (schemaObjectPrefix.equalsIgnoreCase(HibernateStoreConstants.versionPrefix))
                  {
                     query.setString(0, blobId);
  @@ -1079,8 +1091,7 @@
            Session session = hibernateSessionFactory.getCurrentSession();
            try
            {
  -            Query query = session.createQuery("from " + schemaObjectPrefix + "BinVal where BINVAL_ID = ?").setString(0,
  -                  blobId);
  +            Query query = session.createQuery(nodeBinValSelect).setCacheable(true).setString(0, blobId);
               Object result = query.uniqueResult();
               if (result != null)
               {
  
  
  



More information about the jboss-cvs-commits mailing list