博客
关于我
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
阅读量:796 次
发布时间:2023-02-26

本文共 2089 字,大约阅读时间需要 6 分钟。

OpenSessionInViewFilter 配置与使用说明

1. OpenSessionInViewFilter 配置

在项目中使用 OpenSessionInViewFilter 过滤器时,需要按照以下步骤进行配置:

1.1 配置 web.xml

在项目的 web.xml 文件中,添加 OpenSessionInViewFilter 的配置:

openSessionInViewFilter
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
openSessionInViewFilter
/*

1.2 配置参数

OpenSessionInViewFilter 提供了一些可选参数,主要有以下几个:

  • singleSession:默认为 true。若设置为 false,则相当于不使用 OpenSessionInView 功能。
  • sessionFactoryBean:指定 LocalSessionFactoryBean 的名称,默认为 sessionFactory

示例配置:

singleSession
true
sessionFactoryBean
sessionFactory

1.3 Flush 模式设置

OpenSessionInViewFilter默认设置为 FlushMode.NEVER,但可以通过配置改变:

flushMode
AUTO

2. 使用 HibernateDaoSupport

在使用 OpenSessionInViewFilter 后,需要在 DAO 层继承自 HibernateDaoSupport,从而获得以下便利方法:

  • getSession():获取当前线程的 Session。
  • getHibernateTemplate():获取 HibernateTemplate。

示例代码:

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class XxxDAO extends HibernateDaoSupport {    public void save(Xxx transientInstance) {        try {            getHibernateTemplate().save(transientInstance);        } catch (RuntimeException re) {            throw re;        }    }}

3. 常见问题及解决方案

3.1 FlushMode.NEVER 错误

如果遇到以下错误:

org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER)

检查是否有未配置的事务或 FlushMode。确保在需要写入数据的方法中,事务已正确声明。

3.2 事务配置

确保在需要写入数据的方法上有事务支持,并使用 @Transactional 注解或手动配置事务。

3.3 FlushMode 设置

如果需要改变 FlushMode,可以在 OpenSessionInViewFilter 的配置中设置:

flushMode
AUTO

4. 替代方案

4.1 使用 OpenSessionInViewInterceptor

可以使用 OpenSessionInViewInterceptor 代替 Filter,通过 AOP 配置在需要的层次上。

4.2 配置示例

在 application.xml 中配置:

5. 注意事项

5.1 内存与性能问题

OpenSessionInViewFilter 会导致 Session 生命周期延长,可能引发内存和数据库连接问题。建议谨慎使用,并根据实际需求调整配置。

5.2 事务控制

OpenSessionInViewFilter 可能影响事务的控制范围,确保在需要读写操作时,事务已正确配置。

5.3 高并发场景

在高并发环境下,可能需要调整连接池设置,避免因 Session 绑定导致连接耗尽。

转载地址:http://uzvfk.baihongyu.com/

你可能感兴趣的文章
Openstack企业级云计算实战第二、三期培训即将开始
查看>>
OpenStack创建虚拟机实例实战
查看>>
OpenStack安装部署实战
查看>>
OpenStack实践系列⑨云硬盘服务Cinder
查看>>
OpenStack架构
查看>>
OpenStack版本升级与故障排查实战
查看>>
Openstack的HA解决方案【替换原有的dashboard】
查看>>
OpenStack的基本概念与架构详解
查看>>
Openstack的视频学习
查看>>
OpenStack自动化安装部署实战(附OpenStack实验环境)
查看>>
openstack虚拟机迁移live-migration中libvirt配置
查看>>
OpenStack项目管理实战
查看>>
OpenStreetMap初探(一)——了解OpenStreetMap
查看>>
openSUSE 13.1 Milestone 2 发布
查看>>
openSUSE推出独立 GUI 包管理工具:YQPkg,简化了整个软件包管理流程
查看>>
OpenVSwtich(OVS)Vlan间路由实战 附实验环境
查看>>
Openwrt LuCI模块练习详细步骤
查看>>
openwrt_git_pull命令提示merger冲突时如何解决?
查看>>
OpenWrt包管理软件opkg的使用(极路由)
查看>>
OpenWrt固件编译刷机完全总结
查看>>