Bean Managed Persistence

Describe BeanManagedPersistence here: SQL CRUD is hard coded into a BMP entity bean (as opposed to using a deployment descriptor)

"Even to access an entity by its primary key, you have to go twice to the database."

Unless you add the ejbLoad() I do not think you have to go twice to the database:

public String ejbFindByPrimaryKey(String primaryKey) throws FinderException? {

    boolean haveResult = false;        //...
    String query  = "select id  from CUSTOMER  where id = ? ";
    PreparedStatement prepStatement = connection.prepareStatement(query);
    prepStatement.setString(1, primaryKey);
    haveResult = prepStatement.execute();    //...     
    if (! haveResult) {
            throw new ObjectNotFoundException?("No record found for Customer id: " + primaryKey );
            }  
    return primaryKey;

The ejbLoad() call might be considered Lazy Initialization.

Unless ejbLoad() is called you don't have access to the Entity Bean by definition. So ejbLoad() will be called in 99% of the cases following the ejbFindByPrimaryKey(). Why do you think clients call ejbFindByPrimaryKey(), just to discard the resulting reference?

The N+1 hits was pretty silly - I cant defend that one.

Dave Hunter


EditText of this page (last edited December 31, 2010) or FindPage with title or text search