用户User与Role,Resource关联都是lazy,而使用Spring Security时,用户登陆成功需要预先取得User的所有权限资源,项目的写法是:
List<User> userList = userDAO.find("select distinct u FROM User u left join fetch u.roles r left join fetch r.resources s where u.name=? and u.enabled = 1", userName);
另我迷惑不解的是,是LAZY就是用户在需要角色资源时,就直接可以取到,因为我们配置了OpenSessionInViewFilter,为什么还要在取用户时还要用left join fetch去取角色和资源,
10.1那天无聊时想起,openSessionViewFilter是指jdbc session与http request的生命周期同步,从一个请求开始到返回页面时openSessionView会保持数据库连接打开,页面处理完成后当前数据库session关闭。
而我所看到的User如果不用left join fetch则登陆成功后,一个请求完成则当前数据库连接关闭,当然你在后面使用LAZY取角色和资源时出现session已经关闭的错误。到这里就知道要用left join fetch一次性将所有角色资源对象取到。
看书更多需要思考和实践!
分享到:
相关推荐
### Hibernate中的五大核心接口 #### 一、概述 在Hibernate框架中,存在五大核心接口,它们分别是:`Session`、`SessionFactory`、`Transaction`、`Query` 和 `Configuration`。这些接口对于Hibernate的正常运行至...
hiberante3 注解帮助文档hiberante3 注解帮助文档hiberante3 注解帮助文档hiberante3 注解帮助文档hiberante3 注解帮助文档
在Java的持久化框架中,Hibernate是一个非常流行的ORM(对象关系映射)工具,它允许开发者将数据库操作转化为对Java对象的操作。DAO(Data Access Object)层是软件设计模式中的一个重要概念,主要用于处理数据访问...
《Hibernate中文帮助文档》是Java开发领域中关于Hibernate框架的一份详尽参考资料,它涵盖了Hibernate的各个方面,旨在帮助开发者深入理解和高效使用这个强大的对象关系映射(ORM)工具。Hibernate作为一个开源的ORM...
最新springboot2基础hiberante5完整项目,打包jar,运行jsp,包括后台与前台,拦截器,登录,后台下载就可以使用,注意不是jpa,里面有完整Dao,千万级数据项目分离的代码,为了适合老项目开发特意集成hiberante5....
源码中的`org.hibernate.mapping`包下包含了许多关于对象持久化的类和接口。 3. 数据库交互:Hibernate通过JDBC进行数据库操作,`org.hibernate.engine.jdbc`包下包含了对JDBC的封装。例如,ConnectionProvider负责...
Spring 框架是 Java 企业级应用开发中的核心组件,它提供了全面的软件基础设施,包括依赖注入(DI)、面向切面编程(AOP)以及众多的模块如数据访问、Web 应用、任务调度等。Spring MVC 是 Spring 框架的一部分,...
Hibernate Tools是一套全新而且完整的面向Hibernate3的工具集合,它包含了Eclipse插件和Ant编译流程。Hibernate Tools是JBoss Tools的核心组件,所以他也是JBoss Developer Studio的一部分
1. SessionFactory:它是整个Hibernate的核心,负责创建Session实例,配置信息(如数据库连接、映射文件等)都在SessionFactory中初始化。 2. Session:Session是与数据库交互的接口,用于执行CRUD操作(创建、读取...
开发工具:MyEclipse 6....Struts+Spring+Hiberante框架整合的简单登录系统 无需配置任何文件、只需在mysql中创建一个空数据库 如:create database test; 注:mysql数据库用户名:root 密码:root
Hibernate是一个强大的Java持久化框架,它为开发者提供了在Java应用程序中管理关系数据库模型的工具。在5.0.7版本中,Hibernate引入了一系列改进和增强,使得它在处理数据库操作时更加高效和便捷。 **一、Hibernate...
描述中的“Hiberante3_HQL”提示我们将会涉及到Hibernate查询语言(HQL),它是面向对象的查询语言,允许开发者以类和对象的方式查询数据库。 “Hibernate3_缓存机制”意味着这部分内容将深入探讨Hibernate如何通过...
hiberante4.2.3-part2
Spring MVC 和 Hibernate 是两个在Java Web开发中广泛使用的框架,它们分别是用于构建MVC(Model-View-Controller)架构的Web应用和管理数据库操作的对象关系映射(ORM)工具。在实际项目中,这两个框架的集成能提供...
在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库,而无需关心底层SQL语句的编写。本文将深入探讨Hibernate的四种主要查询方式:HQL(Hibernate Query...
总的来说,"Struts2+Hiberante+ajax+Mysql 三级联动"项目展示了如何利用这些技术进行高效的Web开发,特别是在处理多级交互和动态数据展示方面。通过学习和实践这样的项目,开发者可以提升对Java Web开发的理解,尤其...
hiberante-4.2.3-part3
hiberante-4.2.3-part4
Struts2、Hibernate、Spring、ExtJS 和 OA(Office Automation)办公系统的整合是企业级Java应用开发中的常见架构,这个组合通常被称为SSH2E。这是一个强大的框架集合,用于构建高效、可扩展且易于维护的企业级应用...
hiberante 代码save方法过程,分析