By the way, just something came to my mind about you talking about caching the Home for the entity bean.
Hmm, let me put this way. Caching should be used to reduce network calls. Since you talking about caching the home objects for the entity bean, I feel you are thinking the possiblity of using remote interface for entity bean. OK. This is very scary because you talking about very bad J2EE practice here (using remote interface for entity bean). I know before ejb 2.0, there is no way to specify local interface for entity bean, as a result, talking about caching the home for entity bean is fine. However, with ejb 2.0 or later, we are now provided with local interface, so this is why so many people talking about wrapping your entity bean with your session beans. If you are doing this, caching the local home for you entity bean services very little purpose because accessing a local home object is just making in memory JNDI calls, and This is very quick. Caching this in memory will not
boost too much performance in this case. However, if you do this on your web client side (caching remote home for your session beans), this will boost a lot of performance because you are reducing the network calls in this case.