Spring OpenEntityManager视图过滤器替代方案

Spring OpenEntityManager视图过滤器替代方案,spring,hibernate,jpa,ejb-3.0,Spring,Hibernate,Jpa,Ejb 3.0,原因如下所述: 及 我想使用Springs OpenEntityManager视图过滤器的替代方案。这绝对是一个性能问题。如果禁用OpenentityManagerInViewFilter,则会出现以下错误: LazyInitializationException:42 - failed to lazily initialize a collection 过滤器的一种替代方法是,在通过请求发送到视图之前,访问延迟加载的集合中的所有元素。然而,此时您应该质疑是否需要急切地获取这些属性 下面

原因如下所述:

我想使用Springs OpenEntityManager视图过滤器的替代方案。这绝对是一个性能问题。如果禁用OpenentityManagerInViewFilter,则会出现以下错误:

LazyInitializationException:42 - failed to lazily initialize a collection 

过滤器的一种替代方法是,在通过请求发送到视图之前,访问延迟加载的集合中的所有元素。然而,此时您应该质疑是否需要急切地获取这些属性

下面是一些要演示的psuedo代码

   //Inside controller
   Department dept = dao.findDepartment(id);

   //This will load the entities, avoiding the exception.
   for(Employee e: dept.getEmployees()){ //Assume employees are lazy loaded
     e.getName();
   }

   request.setAttribute("department", dept); //In Spring this could be the model

谢谢你,凯文。但这不是一个合适的解决方案。考虑到我们的应用程序非常庞大,我们不能在代码中的任何地方都进行更改。更微妙的方法是使用某种DTO或类似的东西。但我们暂时不谈这件事。急切地抓取也不是一个好的解决方案。@avijendr在Pro JPA2一书中签出它有一些解决这个问题的方法,我相信EntityManager一章。我现在没有。