最近在做一个项目,数据持久层这块用了hibernate。之前学过后就没怎么用过,一直在用IBATIS。在整合spring security的时候碰到了“no session,or session was closed”,因此在网上找找好的解决方案。
现在一般比较常用的应该就是配置opensessioninview了,但是这个东西对性能的损耗感觉太大了,因为毕竟需要用到延迟加载的那些数据的时候并不多,可以说很少。就为了这个而把所有的所有的session保持到页面请求结束,是得不偿失的。
我们配置延迟加载的目的就是为了优化性能,在需要的时候去查询数据,不需要的时候就不去查询。出现“no session,or session was closed”这种错误的时候应该就是我们需要这些数据,而这些数据为空的时候。那在session关闭前让hibernate获取这些数据不就可以了吗。我们一般将业务逻辑写在service中,在service中调用dao的方法,给service的方法配置事物。
应此,我们可以service的方法里面控制hibernate,让其加载数据。
比如:
public SecUser getUserWithRole(String userName) {
SecUser user = userDAO.getUser(userName);
if (user != null) {
user.getRoleSet().size();//这里直接调用一下权限集合的size方法,让hibernate加载role数据。
}
return user;
}
这样便可以简单的避免session关闭的异常,而且不会影响hibernate对session的管理。
以上是一些个人的想法,如果有问题请各位大侠拍砖指正。
分享到:
相关推荐
### Hibernate延迟加载以及利用Spring #### 一、Hibernate延迟加载概念与原理 在理解Hibernate的延迟加载机制之前,我们首先需要了解什么是延迟加载。延迟加载(Lazy Loading)是一种设计模式,其核心思想是在真正...
### Hibernate延迟加载详解 #### 一、什么是延迟加载? 延迟加载是一种优化技术,在软件开发中广泛应用于各种场景,尤其在数据库交互中尤为重要。其核心思想是仅在确实需要某个资源时才加载它,而非一开始就加载...
### Hibernate延迟加载深入剖析 #### 一、概述 在现代软件开发中,特别是与数据库交互的应用场景下,Hibernate作为一款流行的Java持久层框架,提供了多种高效处理数据的技术。其中,延迟加载(Lazy Loading)是一...
详细介绍hibernate延迟加载,对hibernate初学者有一定的帮助
《Hibernate延迟加载与代理模式解析》 在Java的持久化框架Hibernate中,延迟加载(Lazy Load)是一项重要的优化策略,其核心目标是提高系统性能,减少内存占用,避免不必要的数据库交互。延迟加载允许我们在需要...
在处理大数据量或者复杂数据结构时,Hibernate引入了延时加载(Lazy Loading)机制,以提高应用程序的性能。本文将深入探讨在JSP(JavaServer Pages)环境中,如何理解和应对Hibernate的延时加载问题。 首先,我们...
Hibernate延迟加载机制.zip
Hibernate的延迟加载(Lazy Loading)和懒加载机制(Lazy Initialization)是优化ORM框架性能的重要策略。这个机制的主要目的是提高程序的效率,减少不必要的数据库交互,只在真正需要数据时才去加载它们。以下是对...
【hibernate 延迟加载】 在Java的持久化框架Hibernate中,延迟加载(Lazy Loading)是一种优化数据库访问性能的技术。它允许我们在需要时才加载关联的对象,而不是在初始查询时就一次性加载所有数据。这有助于减少...
### Hibernate延迟加载详解 #### 什么是Hibernate延迟加载? 在探讨Hibernate延迟加载之前,我们先简要回顾一下Hibernate框架。Hibernate是一种流行的Java持久层框架,它提供了对象关系映射(ORM)的功能,允许...
- 解决方法之一是在关闭 Session 之前加载关联对象,如通过 `session.evict(user)` 或 `Hibernate.initialize(user.getPermissions())`。 - 另一种解决办法是在 HQL 查询或 Criteria 查询中使用 Join Fetching。 ...
《Hibernate延迟加载详解》 Hibernate作为Java领域中的一个强大的对象关系映射框架,提供了许多优化数据库操作的策略,其中之一便是延迟加载(Lazy Loading)。延迟加载机制旨在减少不必要的性能消耗,只在真正需要...
Hibernate延迟加载是ORM框架Hibernate中的一个重要特性,它旨在提高应用程序的性能和效率。延迟加载(Lazy Loading)策略允许我们仅在需要访问一个对象或其属性时才从数据库加载它们,而不是在初始加载实体时就一次...
集合类型的延迟加载是Hibernate延迟加载机制中最能显著提升性能的部分。在Hibernate中,集合类型的延迟加载通过使用自定义的集合类实现,如`net.sf.hibernate.collection.Set`,而非标准的`java.util.Set`。这样,...
本文将深入探讨几种解决Flex与Hibernate延迟加载问题的方法,并着重讲解使用Gilead的方案。 1. **LCDS的Hibernate Adapter**:Adobe LiveCycle Data Services (LCDS) 提供了一个Hibernate适配器,可以处理延迟加载...
### Hibernate延迟加载详解 #### 一、概述 Hibernate 是一种常用的 Java 持久层框架,它能够将 Java 应用程序与底层数据库之间建立桥梁,简化数据访问逻辑。为了提高应用程序性能,Hibernate 提供了多种优化手段,...
在 Hibernate 框架中,延迟加载(Lazy Loading)是一种优化数据访问性能的重要技术。它允许我们只在真正需要数据时才从数据库加载,避免一次性加载大量数据导致的内存消耗和性能瓶颈。当我们处理与实体相关的集合...