Tim,

As I am not sure of the exact nature of your entity beans, I can't give 
you any detailed suggestions, but many people impement a 'dirty' flag in 
their code.

eg:

void setName(String name)
{
    dirty=true;
    this.name = name;
}

ejbStore()
{
   if (!dirty)
       return;
   else
   {
     doUpdate();
     dirty=false;
   }
}

This limits the number of updates that you are doing.

I assume that you have a very good reason for using BMP, but I would 
suggest that you use CMP where possible.  The performance benefits are 
quite large.

Cheers,
Scott

Tim Kang wrote:

> Hi
> 
> I am using JSP (client) and BMP Entity beans (for mysql db) in my
> application. I am having a few problems in terms of performance.
> 
> 1. When I call homeObject.findAll() for the first time, ejbLoad() is invoked
> for every row in the database. I know this only happens once so I can
> tolerate this but I am open to suggestions.
> 
> 2. Once the entity beans are loaded, I call
> homeObject.findByPrimaryKey().getSomeAttribute(). This calls ejbStore() for
> every row in the database as well. This is not acceptable as the EJB is
> performing "UPDATE" * number of rows in DB.
> 
> I tried to solve this by implementing a stateful session bean acts a middle
> layer between JSP and entity beans. However, the problem still exists
> 
> My session bean code:
> 
> public class PubcompanyManagerBean implements SessionBean{
> 
>   private SessionContext context;
> 
>   private PubCompany pubcompany;
>   private PubCompanyHome pubcompanyhome;
> 
>   public void ejbCreate() throws NamingException, RemoteException {}
> 
>   public void ejbRemove() {}
>   public void ejbActivate() {}
>   public void ejbPassivate() {}
>   public void setSessionContext(SessionContext sc) {
>     context = sc;
>   }
> 
>   // Business logic methods
>   public Collection getAllPubCompanies() throws NamingException,
> RemoteException, FinderException {
>     Context context = new InitialContext();
>     pubcompanyhome = (PubCompanyHome)PortableRemoteObject.narrow(
>       context.lookup("java:comp/env/crm/PubCompany"), PubCompanyHome.class);
>     Collection companyList = pubcompanyhome.findAll();
>     return companyList;
>   }
> 
>   public PubCompany getPubCompany(String companyid) throws NamingException,
> RemoteException, FinderException {
>     Context context = new InitialContext();
>     pubcompanyhome = (PubCompanyHome)PortableRemoteObject.narrow(
>       context.lookup("java:comp/env/crm/PubCompany"), PubCompanyHome.class);
>     pubcompany = pubcompanyhome.findByPrimaryKey(companyid);
>     return pubcompany;
>   }
> }
> 
> 
> Thanks in advance,
> 
> Tim
> 
> 
> 
> 


-- 
Scott Farquhar :: [EMAIL PROTECTED]

Atlassian :: http://www.atlassian.com
      Supporting YOUR J2EE World


Reply via email to