• 使用OpenSessionInViewFilter的注意事项


    假设在你的应用中Hibernate是通过spring 来管理它的session.如果在你的应用中没有使用OpenSessionInViewFilter或者OpenSessionInViewInterceptor。session会在
    
    transaction结束后关闭。

    如果应用中使用了OpenSessionInViewFilter或者OpenSessionInViewInterceptor,所有打开的session会被保存在一个线程变量里。在线程退出前通过 OpenSessionInViewFilter或者OpenSessionInViewInterceptor断开这些session。 为什么这么做?这主要是为了实现Hibernate的延迟加载功能。基于一个请求一个hibernate session的原则 允许在事务提交之后延迟加载显示所需要的对象 在web.xml中配置opensessioninviewFilter需要注意一下几点:
    1、必须配置在struts2 Filter的前面 2、opensessioninviewFilter中默认的SessionFactoryBeanName是sessionFactory,因此在applicationContext.xml中配置的SessionFactory的bean实例名称最好也是 sessionFactory,否则就要在web.xml中为opensessioninviewFilter额外配置SessionFactoryBeanName 它也支持通过在web.xml中定义的“SessionFactoryBeanName”的init-param元素 指定的Session工厂对应的bean的名字来查找session工厂。默认的bean的名字 是"sessionFactory"3、如果在applicationContext.xml中没有配置事物的话 但是在web.xml中配置了opensessioninviewFilter,那么opensessioninviewFilter会默认将在没有配置事物的方法上配 置readOnly,这也是为什么在某些涉及到插入或修改数据库的方法上没有加事物而出现的 readOnly错误的原因
  • 相关阅读:
    Python爬虫重写。
    python threading
    问题8:手机端实现点击按钮时更换颜色(解决IOS不显示背景)
    问题7:JavaScript 常用正则示例
    常见问题6:控制台报错整理——报错
    常见问题5:图片与文字垂直居中
    bootstrap学习总结
    常见问题4:文本不能选择 效果
    常见问题3:自适应大小高度与宽度
    javascript——10章 DOM
  • 原文地址:https://www.cnblogs.com/Wen-yu-jing/p/4114756.html
Copyright © 2020-2023  润新知