1 Reply Latest reply on Jul 20, 2011 7:46 PM by John Ament

    A question about the Weld archetype sample app's MemberListProducer

    Ro Chap Newbie

      The MemberListProducer generated by the Weld JEE6 archetype is like this:


      @RequestScoped
      public class MemberListProducer {
          @Inject
          @MemberRepository
          private EntityManager em;
      
          private List<Member> members;
      
          // @Named provides access the return value via the EL variable name "member" in the UI (e.g., Facelets or JSP view)
          @Produces
          @Named
          public List<Member> getMembers() {
              return members;
          }
      
          public void onMemberListChanged(@Observes(notifyObserver = Reception.IF_EXISTS) final Member member) {
              retrieveAllMembersOrderedByName();
          }
      
          @PostConstruct
          public void retrieveAllMembersOrderedByName() {
              CriteriaBuilder cb = em.getCriteriaBuilder();
              CriteriaQuery<Member> criteria = cb.createQuery(Member.class);
              Root<Member> member = criteria.from(Member.class);
              // Swap criteria statements if you would like to try out type-safe criteria queries, a new feature in JPA 2.0
              // criteria.select(member).orderBy(cb.asc(member.get(Member_.name)));
              criteria.select(member).orderBy(cb.asc(member.get("name")));
              members = em.createQuery(criteria).getResultList();
          }
      }



      Is it common to store the list of members, which will be the same for all the users, in the request scope? Isn't this going to consume a lot of extra memory, one list per request, rather than one list for the whole app?


      Thanks in advance.