There seems to be a consensus in the JSF community that the best way to do this is to invoke an action which takes care of actually fetching the data, making the getter merely a POJO-style
getter.

Eg.

public class UserList extends BasePage implements Serializable {
   private static final long serialVersionUID = 972359310602744018L;

   private List users;
public UserList() {
       setSortColumn("username");
   }
// ensure this action is invoked prior to fetching
   public String openUserList() {
      users = sort(userManager.getUsers(null));
      return "success";
   }

   public List getUsers() {
       return users;
   }
}

I won't argue this is the best solution, but as JSF is strange in many ways far beyond the realm of this issue, I've come to accept it to be a better solution than actually fetching the data from the database multiple times.

Safurudin

Matt Raible skrev:
I'm OK with changing UserList to be a better example. What do you
suggest we change it to?

Matt


On 7/30/07, Safurudin <[EMAIL PROTECTED]> wrote:
According to Veniamin Goldins and Ed Burns on the following thread:

http://forum.java.sun.com/thread.jspa?threadID=550485&messageID=3919330

one shoudn't expect getters of managed-beans only to be invoked once
per  request/lifecycle

In Appfuses eg. UserList.java following happens;

    public List getUsers() {
        return sort(userManager.getUsers(null));
    }

As the JSF spec doesn't guarantee that the getters will be called only
once, this could lead to the same query getting
executing multiple times during the JSF lifecycle, eg. validate and
render-response.

It is not critical for such a simple example as in the UserList, but if
you have a lot of getters on a page, then equally many
queries can be executed unnecessarily due to this issue (first-hand
experience)

I believe this should be revised in Appfuse, because this could become a
potential performance leak if enough objects/beans
are involved in a single page rendering. Users don't expect appfuses
examples to do unnecessary query executions.

Any comments are appreciated.

Regards,
Safurudin Mahic


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to