Boa tarde galera
Estou iniciando com JSF
Eu fiz um CRUD, está funcionando normal, porém não sei se eu desenvolvi ele corretamente para eu não ter problema de consumo de memória desnecessário futuramente.
Se alguém puder dar uma opinião sobre o meu código e algumas dicas para melhorar o desempenho, ficarei grato.
Segue abaixo meu MB.
package br.com.rotatask.managedbeans;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.primefaces.event.SelectEvent;
import org.primefaces.event.UnselectEvent;
import com.sun.faces.config.FacesInitializer;
import br.com.rotatask.businessservice.ProjetoBS;
import br.com.rotatask.exceptions.ProjetoDescricaoException;
import br.com.rotatask.exceptions.ProjetoIsExistException;
import br.com.rotatask.exceptions.ProjetoNuloException;
import br.com.rotatask.facesutils.FacesUtils;
import br.com.rotatask.javabeans.Projeto;
@ManagedBean
@ViewScope
public class ProjetoMB {
@EJB
private ProjetoBS projetoBS;
//Lista dos objetos que está no dataTable
private List<Projeto> projetos;
//Objeto que representa o formulário
private Projeto projeto;
//Objeto que representa a linha selecionada do dataTable
private Projeto projetoSelect;
//Variável que representa o desable dos commandButtons
private boolean showButtons = true;
@PostConstruct
public void init(){
//Carrega a tabela com os dados do banco
projetos = new ArrayList<Projeto>();
projetos = projetoBS.findAll();
//Cria um novo objeto pro formulário
projeto = new Projeto();
}
public void save(){
try {
//Salva o objeto no banco
projetoBS.save(projeto);
//Adiciona o objeto na lista
projetos.add(projeto);
//Reseta o formulário
projeto = new Projeto();
FacesUtils.exibirMensagemAviso("Projeto cadastrado com sucesso!");
} catch (ProjetoIsExistException e) {
FacesUtils.exibirMensagemErro("Esse projeto já existe");
//Reseta o formulário
projeto = new Projeto();
e.printStackTrace();
}catch (ProjetoNuloException e){
FacesUtils.exibirMensagemErro("O projeto não pode ser nulo");
e.printStackTrace();
}catch (ProjetoDescricaoException e) {
FacesUtils.exibirMensagemErro("A descrição do projeto não pode estar em branco");
e.printStackTrace();
}
}
public void update(){
try {
//Atualiza o projeto
projetoBS.update(projetoSelect);
FacesUtils.exibirMensagemAviso("Projeto atualizado com sucesso!");
} catch (ProjetoNuloException e) {
FacesUtils.exibirMensagemErro("Favor selecionar um projeto para atualizar.");
e.printStackTrace();
} catch (ProjetoDescricaoException e) {
FacesUtils.exibirMensagemErro("A descriçaõ do projeto não pode estar em branco.");
e.printStackTrace();
}
}
public void delete(){
try {
//Remove o objeto do banco
projetoBS.delete(projetoSelect);
//Remove o objeto selecionado da lista
projetos.remove(projetoSelect);
//Reseta a lista
projeto = new Projeto();
FacesUtils.exibirMensagemAviso("Projeto removido com sucesso!");
} catch (ProjetoNuloException e) {
FacesUtils.exibirMensagemErro("Favor selecionar um projeto para excluir.");
e.printStackTrace();
} catch (ProjetoDescricaoException e) {
e.printStackTrace();
}
}
//Método é chamado quando uma linha da tabela é selecionada
public void atualizaFormulario(SelectEvent e){
//Carrega o objeto selecionado para o formulário
projeto = projetoSelect;
setShowButtons(false);
}
public void limparFormulario(UnselectEvent e){
//Limpa o formulário
projeto = new Projeto();
setShowButtons(true);
}
//getters and setters
}
Att.
