[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