[英]Proper use of getHibernateTemplate() in Spring MVC app?
我的Spring MVC应用程序中有一堆Hibernate映射对象。 默认似乎是对具有关系的嵌套对象的延迟加载。 我在访问例如子对象列表时在JSP中遇到很多错误,从而实现了这一点。
因此,我实现了第二种方法来获取已初始化所有子对象的对象列表。 我想知道是否有人可以给我一些反馈?
这是我的DAO实现中的有效代码:
public List<Address> getTripListFullyInitliazed() {
HibernateTemplate template = getHibernateTemplate();
List<Address> addresses = template.loadAll(Address.class);
for (Address address : address) {
template.initialize(address.getChildren());
}
return addresses;
}
有人可以告诉我是否可以这样做还是应该更改某些内容?
我认为针对此问题的标准解决方案是使用OpenSessionInViewFilter
:
Servlet 2.3过滤器,它将Hibernate
Session
绑定到线程以完成请求的整个处理。 旨在用于“在视图中打开会话”模式,即尽管原始事务已经完成,但允许在Web视图中进行延迟加载。该过滤器通过当前线程使Hibernate Sessions可用,它将由事务管理器自动检测到。 它适用于通过
HibernateTransactionManager
或JtaTransactionManager
进行的服务层事务,也适用于非事务执行(如果配置正确)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.