[英]What is the preferred design pattern for combining JPA,EJB and JSF managed beans?
[英]Suggest a design pattern for application using JSF , EJB 3.0
我创建了一个演示应用程序使用JSF和EJB 3.0(无状态会话bean和JPA),我的持久性提供程序是Hibernate 4,数据库是Apache Derby。
我的班级流程即顺序流程如下,
ManagedBean调用无状态会话bean,在这里我们有一个JPA调用,
请遵循代码,JSF托管bean StudentMgBean.java,
@ManagedBean(name="stMgBean")
@ViewScoped
public class StudentMgBean implements Serializable{
private static final long serialVersionUID = 109117543434170143L;
...........
@EJB
private StudentService studentService;
.........
@PostConstruct
public void init(){
..........
........
this.totalStudentInDB = studentService.getMaxStudent();
}
}
我的EJB接口StudentService.java,
@Local
public interface StudentService {
List<StudentVO> fetchStudentListOrderByStudentId(boolean flag);
List<StudentVO> fetchStudentListOrderByStudentName(boolean flag);
void saveStudentEntity(StudentEntity studentEntity,Integer deptId) throws Exception;
List<DeptEntity> fetchAllDept();
List<StudentVO> fetchStudentByDept(Integer deptId);
void saveAllStudents(List<StudentVO> students) throws Exception;
void deleteAllStudents(List<StudentVO> students) throws Exception;
List<StudentVO> fetchStudentListPerPage(Integer minRow,Integer maxRow) throws Exception;
Integer getMaxStudent() throws Exception;
}
我的EJB无状态会话bean StudentServiceBean.java,
@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER)
public class StudentServiceBean implements StudentService{
@PersistenceContext(unitName="forPractise")
private EntityManager entityMgr;
@Resource
private SessionContext sessionContext;
@EJB
private DeptService deptService;
@Override
public List<StudentVO> fetchStudentListOrderByStudentId(boolean flag){
.........
}
@Override
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void saveStudentEntity(StudentEntity studentEntity,Integer deptId) throws Exception{
........
}
}
在StudentServiceBean中,我注入了EntityManager,因此我直接在此会话bean中编写的方法中执行JPA操作。
没有我的问题是我可以在此流程中使用任何设计模式,我可以选择单独的DAO层,因为我使用EJB 3.0我不必使用ServiceLocator模式,但是我可以使用任何其他模式来分离Bussiness JPA调用的逻辑,
还有一件事,在JSF托管Bean中,我有属性及其getter setter方法,这些方法映射到EL中的JSP组件,如此值= {stMgBean.studentList}
但是在同一个托管bean中,我还有一些方法可以通过JSF的动作命令调用来调用,如果这些方法是在单独的Managed bean中编写的?
请建议一个可用于具有JSF 2.0,EJB 3.0和JPA的项目的设计模式
等待回复
您可以使用以下概念拆分JSF层:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.