1 Reply Latest reply on Aug 11, 2008 4:45 PM by prabhat.jha

    why PortalObjectImpl.getChild does not use cache?

    prabhat.jha

      In my perf testing, I have found that a call made to PortalObjectImpl.getChild results into connection to database.

      at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:9
      0)
      [JBoss] at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnection
      Provider.java:69)
      [JBoss] at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
      [JBoss] at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
      [JBoss] at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
      [JBoss] at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
      [JBoss] at org.hibernate.loader.Loader.doQuery(Loader.java:673)
      [JBoss] at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
      [JBoss] at org.hibernate.loader.Loader.loadEntity(Loader.java:1907)
      [JBoss] at org.hibernate.loader.entity.CollectionElementLoader.loadElement(CollectionElementLoader.
      java:72)
      [JBoss] at org.hibernate.persister.collection.OneToManyPersister.getElementByIndex(OneToManyPersist
      er.java:360)
      [JBoss] at org.hibernate.collection.AbstractPersistentCollection.readElementByIndex(AbstractPersist
      entCollection.java:158)
      [JBoss] at org.hibernate.collection.PersistentMap.get(PersistentMap.java:146)
      [JBoss] at org.jboss.portal.core.impl.model.portal.PortalObjectImpl.getChild(PortalObjectImpl.java:
      427)
      [JBoss] at org.jboss.portal.core.model.portal.command.mapping.DefaultPortalObjectPathMapper$1.getCh
      ild(DefaultPortalObjectPathMapper.java:91)
      [JBoss] at org.jboss.portal.server.servlet.PathParser.map(PathParser.java:86
      
      


      Looking at in in hibernate/portal/domin.hbm.xml, should not the following have cache usage attribute set? Or something similar?

      <one-to-one
       name="objectNode"
       class="org.jboss.portal.core.impl.model.portal.ObjectNode"
       cascade="none"
       constrained="true"
       fetch="select"/>


        • 1. Re: why PortalObjectImpl.getChild does not use cache?
          prabhat.jha

          Sohil and I looked into it. Changing lazy=true from lazy=extra in hibernate/portal/domain.hbm.xml, a call to getChildren(name) results into hibernate using cache. So, we need to figure out how to enable caching with lazy=extra as reducing lazy loading to true or false may not be a good idea when number of portal objects is big.

          This tuning would also need to be done for displayNames as well.