Fiz um trabalho de faculdade aqui usando Primefaces que cadastra e consulta, que nada mais eh do que uma Datatable.
Tudo funciona ok, sem problemas… Mas quando realizo um cadastro, ele demora muito até atualizar os dados do datatable…
O que voce ta usando no seu projeto alem do primefaces?
Como está a consulta do datatable?
De mais informações.
philipe
Cara, é um projeto bem simples mesmo, utilizando a funcionalidade do NetBeans: Novo -> Páginas JSF de Entidade…
Bem, não mudei basicamente nada!! Tanto que quando eu uso as páginas geradas pelo próprio NetBeans, o retorno é rápido, mas quando utilizo o datatable, tem essa lentidão de retorno…
O banco que utilizo é o Oracle 10g e o servidor é o GlassFish…
FernandoFranzini
Pode ser muitas coisas…
Gasto com o perfil JEE do glasfish…
Pool de conexão
Resposta do banco de dados…
E
edudebom
Tive problemas no início quando eu criava as Controladoras das Entidades pelo Netbeans pois criava a EntityManagerFactory automaticamente em todas classes. Para resolver criei uma classe EntityManagerFactory e nas Controladoras eu acesso chamo ela somente. Melhorou bastante o desempenho.
Vlw
philipe
edudebom:
Tive problemas no início quando eu criava as Controladoras das Entidades pelo Netbeans pois criava a EntityManagerFactory automaticamente em todas classes. Para resolver criei uma classe EntityManagerFactory e nas Controladoras eu acesso chamo ela somente. Melhorou bastante o desempenho.
Vlw
Como assim?? Tem como postar um exemplo??
E
edudebom
Poste o código das suas Entidades e Controladoras.
philipe
Entidade GrupoEquipamento
@Entity@Table(name="GRUPOEQUIPAMENTO",catalog="",schema="SACA")@XmlRootElement@NamedQueries({@NamedQuery(name="Grupoequipamento.findAll",query="SELECT g FROM Grupoequipamento g"),@NamedQuery(name="Grupoequipamento.findByIdgrupoequipamento",query="SELECT g FROM Grupoequipamento g WHERE g.idgrupoequipamento = :idgrupoequipamento"),@NamedQuery(name="Grupoequipamento.findByDescrgrupoequipamento",query="SELECT g FROM Grupoequipamento g WHERE g.descrgrupoequipamento = :descrgrupoequipamento")})publicclassGrupoequipamentoimplementsSerializable{privatestaticfinallongserialVersionUID=1L;@Id@Basic(optional=false)@NotNull@Column(name="IDGRUPOEQUIPAMENTO",nullable=false)privateIntegeridgrupoequipamento;@Basic(optional=false)@NotNull@Size(min=1,max=30)@Column(name="DESCRGRUPOEQUIPAMENTO",nullable=false,length=30)privateStringdescrgrupoequipamento;@OneToMany(cascade=CascadeType.ALL,mappedBy="idgrupoequipamento")privateList<Equipamento>equipamentoList;publicGrupoequipamento(){}publicGrupoequipamento(Integeridgrupoequipamento){this.idgrupoequipamento=idgrupoequipamento;}publicGrupoequipamento(Integeridgrupoequipamento,Stringdescrgrupoequipamento){this.idgrupoequipamento=idgrupoequipamento;this.descrgrupoequipamento=descrgrupoequipamento;}// getters & setters
E seu controlador
@ManagedBean(name="grupoequipamentoController")@SessionScopedpublicclassGrupoequipamentoControllerimplementsSerializable{privateGrupoequipamentocurrent;privateDataModelitems=null;@EJBprivatefacade.GrupoequipamentoFacadeejbFacade;privatePaginationHelperpagination;privateintselectedItemIndex;publicGrupoequipamentoController(){}publicGrupoequipamentogetSelected(){if(current==null){current=newGrupoequipamento();selectedItemIndex=-1;}returncurrent;}privateGrupoequipamentoFacadegetFacade(){returnejbFacade;}publicPaginationHelpergetPagination(){if(pagination==null){pagination=newPaginationHelper(10){@OverridepublicintgetItemsCount(){returngetFacade().count();}@OverridepublicDataModelcreatePageDataModel(){returnnewListDataModel(getFacade().findRange(newint[]{getPageFirstItem(),getPageFirstItem()+getPageSize()}));}};}returnpagination;}publicStringprepareList(){recreateModel();return"List";}publicStringprepareView(){current=(Grupoequipamento)getItems().getRowData();selectedItemIndex=pagination.getPageFirstItem()+getItems().getRowIndex();return"View";}publicStringprepareCreate(){current=newGrupoequipamento();selectedItemIndex=-1;return"Create";}publicStringcreate(){try{getFacade().create(current);JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("GrupoequipamentoCreated"));returnprepareCreate();}catch(Exceptione){JsfUtil.addErrorMessage(e,ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));returnnull;}}publicStringprepareEdit(){current=(Grupoequipamento)getItems().getRowData();selectedItemIndex=pagination.getPageFirstItem()+getItems().getRowIndex();return"Edit";}publicStringupdate(){try{getFacade().edit(current);JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("GrupoequipamentoUpdated"));return"View";}catch(Exceptione){JsfUtil.addErrorMessage(e,ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));returnnull;}}publicStringdestroy(){current=(Grupoequipamento)getItems().getRowData();selectedItemIndex=pagination.getPageFirstItem()+getItems().getRowIndex();performDestroy();recreateModel();return"List";}publicStringdestroyAndView(){performDestroy();recreateModel();updateCurrentItem();if(selectedItemIndex>=0){return"View";}else{// all items were removed - go back to listrecreateModel();return"List";}}privatevoidperformDestroy(){try{getFacade().remove(current);JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("GrupoequipamentoDeleted"));}catch(Exceptione){JsfUtil.addErrorMessage(e,ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));}}privatevoidupdateCurrentItem(){intcount=getFacade().count();if(selectedItemIndex>=count){// selected index cannot be bigger than number of items:selectedItemIndex=count-1;// go to previous page if last page disappeared:if(pagination.getPageFirstItem()>=count){pagination.previousPage();}}if(selectedItemIndex>=0){current=getFacade().findRange(newint[]{selectedItemIndex,selectedItemIndex+1}).get(0);}}publicDataModelgetItems(){if(items==null){items=getPagination().createPageDataModel();}returnitems;}privatevoidrecreateModel(){items=null;}publicStringnext(){getPagination().nextPage();recreateModel();return"List";}publicStringprevious(){getPagination().previousPage();recreateModel();return"List";}publicSelectItem[]getItemsAvailableSelectMany(){returnJsfUtil.getSelectItems(ejbFacade.findAll(),false);}publicSelectItem[]getItemsAvailableSelectOne(){returnJsfUtil.getSelectItems(ejbFacade.findAll(),true);}@FacesConverter(forClass=Grupoequipamento.class)publicstaticclassGrupoequipamentoControllerConverterimplementsConverter{publicObjectgetAsObject(FacesContextfacesContext,UIComponentcomponent,Stringvalue){if(value==null||value.length()==0){returnnull;}GrupoequipamentoControllercontroller=(GrupoequipamentoController)facesContext.getApplication().getELResolver().getValue(facesContext.getELContext(),null,"grupoequipamentoController");returncontroller.ejbFacade.find(getKey(value));}java.lang.IntegergetKey(Stringvalue){java.lang.Integerkey;key=Integer.valueOf(value);returnkey;}StringgetStringKey(java.lang.Integervalue){StringBuffersb=newStringBuffer();sb.append(value);returnsb.toString();}publicStringgetAsString(FacesContextfacesContext,UIComponentcomponent,Objectobject){if(object==null){returnnull;}if(objectinstanceofGrupoequipamento){Grupoequipamentoo=(Grupoequipamento)object;returngetStringKey(o.getIdgrupoequipamento());}else{thrownewIllegalArgumentException("object "+object+" is of type "+object.getClass().getName()+"; expected type: "+GrupoequipamentoController.class.getName());}}}}