在自己的方法开头,总是打开一个session,在结尾就关闭,但解决不了延时加载时带来的一大串麻烦,比如说session已关闭,或是连接多起来的时候,直接把服务器给搞瘫痪了。来个朋友说下session的创建原理,再说个管理方案,我在论坛里看过,但还是觉得很抽象。我希望的是一用户一个session,这样不会消耗太多资源吧?顺便讲个延时加载的原理,究竟是在方法后去查数据库还是同时进行的?例如用户表有个字段是角色ID,配置的时候,角色表lazy="flase",在DAO层有一方法查所有用户的,我是知道,是这方法执行完了,再去加载角色表的对应信息还是同时进行的? 还有,查用户和查角色用的是同一个session吗?
解决方案 »
- 请问如何使用<a>标签同时向Action中同时传入两个参数?
- 100分急求2011年以后的ssh框架项目视频,除OA和CRM项目
- 初学struts,实现一个简单的程序,报了如下错误,请各位大侠帮忙看看
- hql语句
- tomcate6启动报的错误
- jsf,struts,tapestry你选择哪个?
- 请教 setAttributeNS 函数的使用
- structs 在struts-config.xml配置好datasource后,如何使用他的连接池?
- JMS的问题????
- 如果不使用ORM框架,使用JDBC怎么维护实体之间的关系?
- Struts包和源代码
- 我找到实习岗位啦!,但是我不知道有工资没,,我晕给位前辈指点一二
他们肯定是再同一个session中,当加载用户信息的时候,它没有发现对角色进行懒加载,
hibernate会进行查询角色,你可以配置下hibernate的show_sql查看sql语句就知道了
如果使用Spring的话,session的创建和销毁不需要你代码处理,懒加载问题也可以用OpenSessionInView解决。但你Spring要会用啊,这一两句说不清楚
如果不用Spring,绝对不要每个方法都创建和销毁一次session。可以在表示层的方法中手动打开Session,放在ThreadLocal里,用它执行业务代码,离开方法前关掉。这样你的懒加载问题可以一定程度解决,但那些在写JSP页面时才初次懒加载的属性还是会失败,你可以在持久层给有可能需要懒加载属性的查询方法,多写一个重载,用一个boolean变量标识是否需要立刻初始化被懒加载的属性。