Jsf 其他地方的nswers/blogs/tutorials/articles.@Tiny:也许这个答案有助于理解DAO模式背后的原意:@BalusC为什么会话范围太广?通过使用视图范围,每次用户加载页面时都必须生成列表,对吗?这不是“坏”吗?或者我们只是更喜欢
Jsf 其他地方的nswers/blogs/tutorials/articles.@Tiny:也许这个答案有助于理解DAO模式背后的原意:@BalusC为什么会话范围太广?通过使用视图范围,每次用户加载页面时都必须生成列表,对吗?这不是“坏”吗?或者我们只是更喜欢,jsf,jakarta-ee,jpa,ejb,dao,Jsf,Jakarta Ee,Jpa,Ejb,Dao,其他地方的nswers/blogs/tutorials/articles.@Tiny:也许这个答案有助于理解DAO模式背后的原意:@BalusC为什么会话范围太广?通过使用视图范围,每次用户加载页面时都必须生成列表,对吗?这不是“坏”吗?或者我们只是更喜欢这样,而不是让bean在整个会话中保持活动状态并消耗内存?@LyK:单击“如何选择正确的bean作用域?”进行解释。@LyK:您不应该在前端的所有会话中缓存DB结果。您应该将它们缓存在后端的单个位置。JPA提供二级缓存的可能性。另外一个优点是,
其他地方的nswers/blogs/tutorials/articles.@Tiny:也许这个答案有助于理解DAO模式背后的原意:@BalusC为什么会话范围太广?通过使用视图范围,每次用户加载页面时都必须生成列表,对吗?这不是“坏”吗?或者我们只是更喜欢这样,而不是让bean在整个会话中保持活动状态并消耗内存?@LyK:单击“如何选择正确的bean作用域?”进行解释。@LyK:您不应该在前端的所有会话中缓存DB结果。您应该将它们缓存在后端的单个位置。JPA提供二级缓存的可能性。另外一个优点是,它精确地知道何时使缓存的实体无效。
<h:dataTable value="#{userListController.userList}" var="u">
<h:column>#{u.userId}</h:column>
<h:column>#{u.userName}</h:column>
</h:dataTable>
@Named(value = "userListController")
@SessionScoped
public class UserListController {
@EJB
private UserListService userListService;
private List<User> userList;
public List<User> getUserList() {
userList = userListService.getUsers();
return userList;
}
}
public class UserListService {
@PersistenceContext
private EntityManager em;
public List<User> getUsers() {
Query query = em.createQuery("SELECT u from User as u");
return query.getResultList();
}
}