OpenSessionInViewer解决延迟加载问题。。。
来源:互联网 发布:yolov2源码解析 编辑:程序博客网 时间:2024/06/05 09:56
由于Hibernate存在延迟加载的问题,当DAO的事务提交之后,session就关闭
此时如果到显示层就没有办法获取对象,使用OpenSessionInViewer是解决延迟加载问题的方案
解决的思路:
1、在表示层开启Session
需要在表示层获取Spring的工厂,以此获取Hibernate的SessionFactory
2、在DAO层获取表示层的session
如果希望在DAO层获取表示层的数据,应该将要获取的数据存储到ThreadLocal
3、当整个过程执行完毕之后再关闭session
需要通过Filter来解决问题
1、创建一个OpenSessionFilter
/**
*以下方法用来获取Spring的工厂和Hibernate的SessionFactory
**/
@Override
public void init(FilterConfig cfg) throws ServletException {
/**
* 使用WebApplcaiontContextUtils.getWebApplicationContext(ServletContext)来获取WEb中的Spring工厂
* 这种手段非常重要,一定要熟悉
*/
wac = WebApplicationContextUtils.getWebApplicationContext(cfg.getServletContext());
factory = (SessionFactory)wac.getBean("sessionFactory");
}
2、通过ThreadLocal来处理session
private static ThreadLocal<Session> sessionHolder = new ThreadLocal<Session>();
private static void setSession(Session session) {
sessionHolder.set(session);
}
public static Session getSession() {
return sessionHolder.get();
}
private static void removeSession() {
sessionHolder.remove();
}
此时如果到显示层就没有办法获取对象,使用OpenSessionInViewer是解决延迟加载问题的方案
解决的思路:
1、在表示层开启Session
需要在表示层获取Spring的工厂,以此获取Hibernate的SessionFactory
2、在DAO层获取表示层的session
如果希望在DAO层获取表示层的数据,应该将要获取的数据存储到ThreadLocal
3、当整个过程执行完毕之后再关闭session
需要通过Filter来解决问题
1、创建一个OpenSessionFilter
/**
*以下方法用来获取Spring的工厂和Hibernate的SessionFactory
**/
@Override
public void init(FilterConfig cfg) throws ServletException {
/**
* 使用WebApplcaiontContextUtils.getWebApplicationContext(ServletContext)来获取WEb中的Spring工厂
* 这种手段非常重要,一定要熟悉
*/
wac = WebApplicationContextUtils.getWebApplicationContext(cfg.getServletContext());
factory = (SessionFactory)wac.getBean("sessionFactory");
}
2、通过ThreadLocal来处理session
private static ThreadLocal<Session> sessionHolder = new ThreadLocal<Session>();
private static void setSession(Session session) {
sessionHolder.set(session);
}
public static Session getSession() {
return sessionHolder.get();
}
private static void removeSession() {
sessionHolder.remove();
}
- OpenSessionInViewer解决延迟加载问题。。。
- 解决JPA延迟加载错误问题
- DWR3.0解决hibernate延迟加载问题
- 解决Hibernate延迟加载出现的问题
- zk中解决listbox延迟加载问题
- spring解决延迟加载问题--no session
- Hibernate延迟加载以及利用Spring事务完美解决延迟加载问题
- 用aop解决flex,hibernate延迟加载问题
- 解决延迟加载的问题 lazy=“false”
- json解决hibernate中级联对象延迟加载有关问题
- 使用Hibernate.initialize解决no session的延迟加载问题
- 使用Hibernate.initialize解决no session的延迟加载问题
- Hibernate_使用clone解决hibernate延迟加载问题及分析
- 延迟加载解决offset过大导致的分页性能问题
- 解决wkwebview在9.2系统加载延迟问题
- hibernate延迟加载问题
- 【SSH2】延迟加载问题
- Hibernate延迟加载问题
- 序列化之一 BinaryFormatter
- ACM题集以及各种总结大全!
- jQuery 几种写法
- 存储过程语法及实例 (最后带例子)
- 米新江传
- OpenSessionInViewer解决延迟加载问题。。。
- 不同编译器的故事一
- linux网络编程之socket(十六):通过UNIX域套接字传递描述符和 sendmsg/recvmsg 函数
- spring集成hibernate3的方式
- ASP.NET form post提交与get提交
- .net 对sql数据库操作中会出现单引号'无法insert到数据库中
- 大O表示法算法复杂度速查表(Big-O Algorithm Complexity Cheat Sheet)
- spring整合hibernate4.。。。
- 如何更改Linux自动锁屏时间