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

transaction结束后关闭。

如果应用中使用了OpenSessionInViewFilter或者OpenSessionInViewInterceptor,所有打开的session会被保存在一个线程变量里。在线程退出前通过

OpenSessionInViewFilter或者OpenSessionInViewInterceptor断开这些session。 

为什么这么做?这主要是为了实现Hibernate的延迟加载功能。基于一个请求一个hibernate session的原则 允许在事务提交之后延迟加载显示所需要的对象

在web.xml中配置opensessioninviewFilter需要注意一下几点:

、必须配置在struts2 Filter的前面

、opensessioninviewFilter中默认的SessionFactoryBeanName是sessionFactory,因此在applicationContext.xml中配置的SessionFactory的bean实例名称最好也是

sessionFactory,否则就要在web.xml中为opensessioninviewFilter额外配置SessionFactoryBeanName

它也支持通过在web.xml中定义的“SessionFactoryBeanName”的init-param元素 指定的Session工厂对应的bean的名字来查找session工厂。默认的bean的名字

是"sessionFactory"。

、如果在applicationContext.xml中没有配置事物的话 但是在web.xml中配置了opensessioninviewFilter,那么opensessioninviewFilter会默认将在没有配置事物的方法上配

置readOnly,这也是为什么在某些涉及到插入或修改数据库的方法上没有加事物而出现的 readOnly错误的原因

使用OpenSessionInViewFilter的注意事项的更多相关文章

  1. SSH 整合及注意事项

    Spring 整合 hibernate 配置 1. spring 配置管理datasource 及 sessionFactory 1) 引入相关jdbc配置文件. <context:proper ...

  2. (原创)Hibernate 使用过程中(尤其是多对多关联中的级联保存和级联删除)的注意事项(基于项目的总结)

    一.先上知识点: 1.hibernate多对多关联关系中最重要的参数是(基于配置文件xxx.hbm.xml文件形式): 1):inverse属性,如果设置inverse=“true”就代表让对方参与维 ...

  3. jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧

    这篇文章总结的是我在使用resizable插件的过程中,遇到的问题及变通应用的奇思妙想. 一.resizable使用注意事项 以下是我在jsfiddle上写的测试demo:http://jsfiddl ...

  4. Windows Server 2012 NIC Teaming介绍及注意事项

    Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...

  5. TODO:Golang指针使用注意事项

    TODO:Golang指针使用注意事项 先来看简单的例子1: 输出: 1 1 例子2: 输出: 1 3 例子1是使用值传递,Add方法不会做任何改变:例子2是使用指针传递,会改变地址,从而改变地址. ...

  6. app开发外包注意事项,2017最新资讯

    我们见过很多创业者,栽在这app外包上.很多创业者对于app外包这件事情不是特别重视,以为将事情交给app外包公司就完事了,实际上不是的.无论是从选择app外包公司还是签订合同.售后维护等各方面都有许 ...

  7. favicon.ioc使用以及注意事项

    1.效果 2.使用引入方法 2.1 注意事项:(把图标命名为favicon.ico,并且放在根目录下,同时使用Link标签,多重保险) 浏览器默认使用根目录下的favicon.ico 图标(如果你并没 ...

  8. ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项(红字需要留意)

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  9. 【原】Masonry+UIScrollView的使用注意事项

    [原]Masonry+UIScrollView的使用注意事项 本文转载请注明出处 —— polobymulberry-博客园 1.问题描述 我想实现的使用在一个UIScrollView依次添加三个UI ...

随机推荐

  1. ActiveMQ 权限(二)

    在 ActiveMQ 权限(一) 配置了对消息队列的权限,以下设置完成消息的权限,比如只接受某ip的消息. 两步完成, 第一步:继承接口org.apache.activemq.security.Mes ...

  2. Linux内核网络栈源代码分析

    http://blog.csdn.net/column/details/linux-kernel-net.html

  3. Arc Object开发,概述2

    简介 Esri公司推出的ArcGIS产品是一个非常强大的体系,里面包含ArcGIS Desktop.ArcGIS Server.ArcGIS Engine.ArcSDE.ArcGIS Online等, ...

  4. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'

    原因:找不到mysql.sock文件 解决方法: 1 找到mysql.sock文件位置 echo "show variables" | mysql | grep "soc ...

  5. 手机APP自动化持续集成方案

    自动化测试流程 自动化测试框架

  6. 第一个Swift程序Hello World

    import Foundation print("Hello, World!") print("I am here!") var arr=["项羽&q ...

  7. 微信小程序 - 对象转换成对象数组

    后端传过来的一个个对象 {1,2,3,4},{1,3,5,},{1,3,5} 我们应该转化为数组对象 [{},{},{},{}]  ,最后通过wx:for遍历到页面 示例图:

  8. 【MVC2】发布到IIS7.5上后Session为null

    MVC2代码「Session.IsNewSession」在VS中可以正常执行,发布到IIS7.5上之后Session为null导致出错. if (Session.IsNewSession) { ... ...

  9. Cocos2d-x中Vector&lt;T&gt;容器以及实例介绍

    Vector<T> 是Cocos2d-x 3.x推出的列表容器,因此它所能容纳的是Ref及子类所创建的对象指针,其中的T是模板,表示能够放入到容器中的类型,在Cocos2d-x 3.x中T ...

  10. js:Razor视图下服务器代码给Javascript变量赋值

    namespace Razor.Controllers { public class JSController : Controller { public ActionResult Index() { ...