현재 트랜잭션 뷰 패턴을 사용하여 뷰에서 컬렉션의 지연로드를 가능하게합니다.JPA 지연로드 JSF 뷰의 콜렉션 - 필터 사용보다 나은 방법?
나는 그럼 난 다음 (오히려 인위적인) 백업 콩을 가정
public class ViewFilter implements Filter {
@Resource UserTransaction tx;
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
try {
tx.begin();
chain.doFilter(request, response);
}
//catch here
finally {
//another try-catch
tx.commit();
}
}
}
...은 web.xml
<filter>
<filter-name>view</filter-name>
<filter-class>com.jasoni.ViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>view</filter-name>
<url-pattern>*.xhtml</url-pattern>
</filter-mapping>
에 다음과 필터 클래스는 다음과 같은했다가
@ManagedBean
@RequestScoped
public class DepartmentEmployees {
@EJB
private DepartmentServiceBean deptService;
@ManagedProperty(value="#{param.deptId}")
private Integer deptId;
private Department dept;
@PostConstruct
public String init() {
dept = deptService.findById(deptId);
}
}
내보기 (.xhtml 파일)에서 이와 비슷한 작업을 수행 할 수 있습니다.
<ul>
<c:forEach var="emp" items="#{departmentEmployees.dept.employees}">
<li>#{emp.firstName} #{emp.lastName}</li>
</c:forEach>
</ul>
누군가 필터 (또는 서블릿)를 사용하지 않고 동일한 것을 달성하는 다른 방법을 알고 있는지 궁금합니다.
안녕하세요, 1 월 감사합니다. 예, Java EE 서버 (JBoss)를 사용하고 있으며 JBoss와 관련된 많은 일을하지 않으려합니다. Stateless Session Beans와 비슷한 접근법이 있습니까? – JasonI
글쎄, 제가 게시 한 내용은 JBoss에만 국한된 것이 아닙니다. 이식성은 느슨하지 않을 것입니다 (Weld는 기본 CDI 구현이며 Seam 3는 일반 CDI 확장입니다). 하지만이 방법은 상태 저장이므로 SLSB로 구현할 수는 없습니다. 그러나 주를 두려워하지 말고, 그들에 대해 나쁜 점은 없습니다. –
알았어, 정보 주셔서 감사합니다. Weld와 Seam3을 살펴보기로하자. – JasonI