`
wuhuajun
  • 浏览: 93891 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

opensessioninviewfilter 获取和释放数据库连接时机

 
阅读更多

问题:  

  最近同事问我关于hibernate4 opensessioninviewfilter 的问题,具体是这样的  opensessioninviewfilter是一个请求到来绑定一个session到threadlocal ,这样能解决hibernate数据延迟加载导致提交后数据取不到的问题。 这个没有什么问题 ,但是session是什么时候获取jdbc connection 又是什么时候关闭的呢???

 

初步分析:

我第一个反映就是session创建的第一次执行jdbc操作的时候 获取connection  最后到了过滤器结束的时候关闭connection  再关闭session。就这么回答了 。后来发现错的很离谱。

由于没有怎么用用过hibernate  就分析了下。

 

 深入分析:

这个是controller里面的方法三个一样的方法

 这个是service层被调用的方法(service层类级别启用了事务)

 

如果按照我的分析  数据库的一个连接 应该一直被占用着

 

但是我通过监控visualvm 监控到数据源占用情况是这样的

 

这个图说明了 确实在使用时候获取连接 每次事务开始connection占用  结束connection连接被释放

 

hibernate只有在你用的时候才会占用数据库的连接  其他的时候都是会释放的。

 

总结:

遇到问题 不能想当然,特别对应自己不熟悉的东西。 切记!!!

 

  • 大小: 17.1 KB
  • 大小: 9.6 KB
  • 大小: 6.5 KB
1
3
分享到:
评论

相关推荐

    关于OpenSessionInViewFilter的学习

    2. **性能影响**:由于延长了Session的生命周期,可能会增加数据库连接的占用时间,从而影响性能。因此,对于大流量的网站,需要谨慎使用或寻找其他解决方案,如使用缓存。 3. **并发问题**:由于Session是绑定到...

    OpenSessionInViewFilter

    OpenSessionInViewFilter个人学习总结

    java和数据库性能优化.doc

    ### Java和数据库性能优化策略详解 #### 数据库性能优化关键点 在数据库性能优化领域,遵循几个核心原则至关重要。首先是**优先考虑查询**。在大多数应用程序中,查询操作远比插入或更新操作频繁,因此在数据库...

    struts-hibernate-sprint开发详解 乱码问题 连接池

    在实际应用中,根据不同的数据库系统,如MySQL或Oracle,需要调整数据库连接驱动和URL。 接下来,添加Hibernate支持。在MyEclipse中,通过增加Hibernate Capabilities,选择合适的Hibernate版本(如3.2),并关联已...

    SSH2.0配置日记

    SessionFactory 是 Hibernate 的核心组件,负责管理数据库连接池和数据库操作。 3. Struts2 配置 在 Struts2 中,需要配置 struts.xml 文件,以便定义 Struts 的配置信息。例如,可以在该文件中配置常量、Action、...

    搭建SSH框架总结.doc

    通过在视图渲染阶段保持数据库会话,可以确保所有延迟加载的数据都能正确获取。 8. **设置字符编码过滤器**:为了确保请求和响应的正确编码,需要在`web.xml`中添加一个自定义的Filter,如`SetEncodingFilters`,以...

    HibernateSpring多数据库解决方案.doc

    这里,`hibernateconfig` 是指向`hibernate.cfg.xml`配置文件的引用,该文件通常包含了Hibernate的实体映射和数据库连接等信息。对于读和写两个数据源,我们需要创建对应的SessionFactory: ```xml <!-- (读)...

    spring3和hibernate4整合的lib库

    1. **配置数据源**:在Spring配置文件中定义数据源,可以使用Apache DBCP或C3P0等连接池来管理数据库连接。 2. **配置SessionFactory**:创建Hibernate的SessionFactory实例,这通常通过`LocalSessionFactoryBean`...

    SSH框架搭建.doc

    然后,按照特定顺序导入所需的jar包,包括Spring的核心包、AOP包、ORM映射包和Web包,Hibernate的核心包及数据库连接相关包,以及Struts的对应版本。在Eclipse中,这些可以通过“导入选项”完成。 在配置阶段,需要...

    struts2.3+spring3.1.2+hibernate4.1.6 配置说明

    在Spring的配置中,使用了`OpenSessionInViewFilter`来处理数据库会话的生命周期。这个过滤器确保在每次HTTP请求中,都会有一个打开的Hibernate Session,以解决“懒加载”问题。配置中包含了`...

    ssh2学习笔记

    2. **数据库连接池配置**:使用`ProxoolListener`监听器,通过`propertyFile`参数指定数据库连接池的配置文件位置,实现数据库连接的管理。 3. **Spring上下文配置**:通过`contextConfigLocation`参数指定Spring...

    ssh整合----annotation

    Hibernate的注解如前所述,用于实体类和数据库的映射。 总结,SSH整合通过注解方式使得配置更加简洁,提高了开发效率。Struts2处理请求,Spring管理bean和依赖,Hibernate负责持久化,三者协同工作,构建出强大且...

    基于全注解方式的SSH基础框架

    - **proxool.properties**: 数据库连接池配置文件,定义了连接池的大小和其他参数。 - **applicationContext.xml**: Spring的核心配置文件,用于定义Bean和依赖注入关系。 ##### Web.xml详解 `web.xml`是项目的...

    用户菜单管理

    同时,为了保证页面显示的中文字符正常,需要正确配置OpenSessionInViewFilter和中文编码过滤器。 总的来说,用户菜单管理是一个涉及前端交互、后端逻辑和数据库操作的复杂功能模块。它需要开发者具备扎实的SSH框架...

    hibernate面试题总结

    但这种方法可能导致过多的数据库连接,因此也有其他解决方案,如OpenSessionInViewFilter和OpenEntityManagerInView。 6. **Hibernate的核心类**: - **Configuration**:负责读取配置信息,创建SessionFactory。 ...

    S2SH集成 案例

    在这个集成中,Spring可能被用来创建和管理数据库连接、事务、DAO(数据访问对象)以及业务服务等组件。例如,Spring的`@Autowired`注解可以自动装配所需的依赖。 然后是Hibernate,这是一个持久层框架,用于对象...

    jar包(struts2.0.8+spring2.0+hibernate3.2)

    在使用这个压缩包时,开发者需要按照一定的顺序进行配置:首先设置Hibernate的连接信息和实体映射,然后在Spring中配置数据源、事务管理器和Hibernate SessionFactory,接着配置Struts2的动作类、结果类型和拦截器。...

    SSH框架ajax获取的json格式数据处理过程

    SSH 框架 Ajax 获取的 JSON 格式数据处理过程 在本文中,我们将详细讲解如何使用 SSH 框架中的 Ajax 获取的 JSON 格式数据处理过程,并且实现菜单联动下拉框的功能。 一、Ajax 中 response 返回的数据是一个二维...

    SSH配置模板[参照].pdf

    3. **数据源和SessionFactory配置**:定义数据源(DataSource)和Hibernate的SessionFactory,为Hibernate提供数据库连接。 4. **事务管理**:Spring的事务管理器配置,例如`PlatformTransactionManager`,可以控制...

Global site tag (gtag.js) - Google Analytics