管理EJB会话bean的Facade模式的最佳实践是什么?

时间:2017-11-14 23:53:04

标签: jsf java-ee entitymanager facade

你好日

我想了解管理外墙的最佳做法。 我项目的主要目标: 通过登录系统连接后,我们会到达我们的帐户页面。根据用户(项目经理或执行者)的状态,我们可以访问项目本身及其每个阶段(状态:项目经理)或仅阶段(状态:执行者)。 在这个项目中,我使用实体,我创建了一个持久性单元,并使用Facade模式来操作我的数据库。 在我的Netbeans中,如果我New > Sessions Bean for Entity Classes,并且说我选择了Example实体,那么Netbeans会生成public abstract class AbstractFacade<T> {...},其中包含许多方法和

 @Stateless
public class ExampleFacade extends AbstractFacade<User> {...}

我选择的所有实体。对于所有Facade,我使用一个ManagerBean并使用:

@EJB
    private ExampleFacade exempleFacade;
在他身上。 我在从其他bean管理器恢复数据时遇到问题,因为对于get projet或阶段我使用@RequestScope因为在.xhtml中获取URL中的参数。在谷歌搜索后,我理解为什么我不能。 为了解决我的问题,我为所有门面创建了一名总经理。 我的项目运作完美,但我想知道它是否是最佳实践,是否安全? 我问自己,在学习jee和jsf方面,这是一个进步的问题

这是我的generalManager

package logic;

import facade.PhasesFacade;
import facade.PostesFacade;
import facade.ProjetsFacade;
import facade.UtilisateursFacade;
import javax.inject.Named;
import java.io.Serializable;
import java.util.ArrayList;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedProperty;
import javax.faces.context.FacesContext;
import model.Phases;
import model.Projets;
import model.Utilisateurs;

/**
 *
 * @author valibert
 */

@Named(value = "generalManager")
@SessionScoped
public class GeneralManager implements Serializable {

    private Utilisateurs currentUser;
    private Projets currentProjet;
    private Phases currentPhase;

    ArrayList<Utilisateurs> listUtilisateurs;
    ArrayList<Projets> listProjets;
    ArrayList<Phases> listPhases;

    private String validForm;
    private String mailUtil;
    private String mdpUtil;
    private int idProjet;

    FacesContext context = FacesContext.getCurrentInstance();
    FacesMessage message = new FacesMessage();

    @ManagedProperty(value = "#{param.idProjet}")
    private String idProjetResquest;

    @EJB
    private PhasesFacade phasesFacade;

    @EJB
    private PostesFacade postesFacade;

    @EJB
    private ProjetsFacade projetsFacade;

    @EJB
    private UtilisateursFacade utilisateursFacade;

    /**
     * Creates a new instance of generalManager
     */
    public GeneralManager() {

    }

    public Utilisateurs getCurrentUser() {
        return currentUser;
    }

    public void setCurrentUser(Utilisateurs currentUser) {
        this.currentUser = currentUser;
    }

    public Projets getCurrentProjet() {
        return currentProjet;
    }

    public void setCurrentProjet(Projets currentProjet) {
        this.currentProjet = currentProjet;
    }

    public Phases getCurrentPhase() {
        return currentPhase;
    }

    public void setCurrentPhase(Phases currentPhase) {
        this.currentPhase = currentPhase;
    }

    public ArrayList<Utilisateurs> getListUtilisateurs() {
        return listUtilisateurs;
    }

    public void setListUtilisateurs(ArrayList<Utilisateurs> listUtilisateurs) {
        this.listUtilisateurs = listUtilisateurs;
    }

    public ArrayList<Projets> getListProjets() {
        return listProjets;
    }

    public void setListProjets(ArrayList<Projets> listProjets) {
        this.listProjets = listProjets;
    }

    public ArrayList<Phases> getListPhases() {
        return listPhases;
    }

    public void setListPhases(ArrayList<Phases> listPhases) {
        this.listPhases = listPhases;
    }

    public PhasesFacade getPhasesFacade() {
        return phasesFacade;
    }

    public void setPhasesFacade(PhasesFacade phasesFacade) {
        this.phasesFacade = phasesFacade;
    }

    public PostesFacade getPostesFacade() {
        return postesFacade;
    }

    public void setPostesFacade(PostesFacade postesFacade) {
        this.postesFacade = postesFacade;
    }

    public ProjetsFacade getProjetsFacade() {
        return projetsFacade;
    }

    public void setProjetsFacade(ProjetsFacade projetsFacade) {
        this.projetsFacade = projetsFacade;
    }

    public UtilisateursFacade getUtilisateursFacade() {
        return utilisateursFacade;
    }

    public void setUtilisateursFacade(UtilisateursFacade utilisateursFacade) {
        this.utilisateursFacade = utilisateursFacade;
    }

    public String getValidForm() {
        return validForm;
    }

    public void setValidForm(String validForm) {
        this.validForm = validForm;
    }

    public String getMailUtil() {
        return mailUtil;
    }

    public void setMailUtil(String mailUtil) {
        this.mailUtil = mailUtil;
    }

    public String getMdpUtil() {
        return mdpUtil;
    }

    public void setMdpUtil(String mdpUtil) {
        this.mdpUtil = mdpUtil;
    }

    public String getIdProjetResquest() {
        return idProjetResquest;
    }

    public void setIdProjetResquest(String idProjetResquest) {
        this.idProjetResquest = idProjetResquest;
    }

    public int getIdProjet() {
        return idProjet;
    }

    public void setIdProjet(int idProjet) {
        this.idProjet = idProjet;
    }

    //Méthode
    public String submitFormLogin(){
        currentUser = utilisateursFacade.findOne(mailUtil);
        if ((utilisateursFacade.findOne(mailUtil).getMdpUtil().equals(mdpUtil)) && (utilisateursFacade.findOne(mailUtil).getMailUtil().equals(mailUtil)) ){
            currentUser = utilisateursFacade.findOne(mailUtil);
            validForm = "toCompteFromIndex";
            return validForm;
        }
        currentUser = new Utilisateurs();
        message.setSeverity(FacesMessage.SEVERITY_INFO);
        message.setSummary("L'utilisateur ou le mot de passe n'est pas valide merci de rééssayer");
        message.setDetail("Message detail.");
        context.addMessage("formConnection", message);
        validForm = "";
        return validForm;
    }

    public void onload(){

        try {
            idProjet = Integer.parseInt(idProjetResquest);
            currentProjet = projetsFacade.findByIdAndUserManager(idProjet, currentUser.getIdUtil());
        } catch (NumberFormatException e){
            idProjetResquest = "404";
        }

    }
    @PostConstruct
    public void initUtilisateurs(){
        this.listUtilisateurs = new ArrayList();
        this.listUtilisateurs.addAll(utilisateursFacade.findAll());
    }

}

这是一个例子

的视图
<ui:composition template="/templates.xhtml"
            xmlns="http://www.w3.org/1999/xhtml"
            xmlns:ui="http://java.sun.com/jsf/facelets"
            xmlns:f="http://xmlns.jcp.org/jsf/core"
            xmlns:h="http://xmlns.jcp.org/jsf/html">
<f:metadata>
    <f:viewParam id="idProjet" name="idProjet" value="#{generalManager.idProjetResquest}" required="true" />
    <f:viewAction action="#{generalManager.onload}" />
</f:metadata> 

<ui:define name="content-main">
    <h2>Chef Projet #{generalManager.currentUser.prenomUtil}</h2>
    <h2>Projet  #{generalManager.currentProjet.libelleProj}</h2>

    <p>Date du début du projet :<h:outputText value="#{generalManager.currentProjet.dateDebutProj}" >
            <f:convertDateTime pattern="MM/dd/yyyy" />
        </h:outputText></p>
    <p>Phases du projet</p>
    <ul>
        <ui:repeat value="#{generalManager.phasesFacade.findPhaseByProjet(projetsManager.projetChoose.idProjet)}" var="itemPhase">
            <li>
                <h:outputLink value="../phases/View.xhtml" >
                    <f:param name="idPhase" value="#{itemPhase.idPhase}" />
                    <h:outputText value="#{itemPhase.libellePhase}"/>
                </h:outputLink>
            </li>
        </ui:repeat>
    </ul>

</ui:define>

提前谢谢

0 个答案:

没有答案