问题:
最近同事问我关于hibernate4 opensessioninviewfilter 的问题,具体是这样的 opensessioninviewfilter是一个请求到来绑定一个session到threadlocal ,这样能解决hibernate数据延迟加载导致提交后数据取不到的问题。 这个没有什么问题 ,但是session是什么时候获取jdbc connection 又是什么时候关闭的呢???
初步分析:
我第一个反映就是session创建的第一次执行jdbc操作的时候 获取connection 最后到了过滤器结束的时候关闭connection 再关闭session。就这么回答了 。后来发现错的很离谱。
由于没有怎么用用过hibernate 就分析了下。
深入分析:
这个是controller里面的方法三个一样的方法
这个是service层被调用的方法(service层类级别启用了事务)
如果按照我的分析 数据库的一个连接 应该一直被占用着
但是我通过监控visualvm 监控到数据源占用情况是这样的
这个图说明了 确实在使用时候获取连接 每次事务开始connection占用 结束connection连接被释放
hibernate只有在你用的时候才会占用数据库的连接 其他的时候都是会释放的。
总结:
遇到问题 不能想当然,特别对应自己不熟悉的东西。 切记!!!
相关推荐
2. **性能影响**:由于延长了Session的生命周期,可能会增加数据库连接的占用时间,从而影响性能。因此,对于大流量的网站,需要谨慎使用或寻找其他解决方案,如使用缓存。 3. **并发问题**:由于Session是绑定到...
OpenSessionInViewFilter个人学习总结
### Java和数据库性能优化策略详解 #### 数据库性能优化关键点 在数据库性能优化领域,遵循几个核心原则至关重要。首先是**优先考虑查询**。在大多数应用程序中,查询操作远比插入或更新操作频繁,因此在数据库...
在实际应用中,根据不同的数据库系统,如MySQL或Oracle,需要调整数据库连接驱动和URL。 接下来,添加Hibernate支持。在MyEclipse中,通过增加Hibernate Capabilities,选择合适的Hibernate版本(如3.2),并关联已...
SessionFactory 是 Hibernate 的核心组件,负责管理数据库连接池和数据库操作。 3. Struts2 配置 在 Struts2 中,需要配置 struts.xml 文件,以便定义 Struts 的配置信息。例如,可以在该文件中配置常量、Action、...
通过在视图渲染阶段保持数据库会话,可以确保所有延迟加载的数据都能正确获取。 8. **设置字符编码过滤器**:为了确保请求和响应的正确编码,需要在`web.xml`中添加一个自定义的Filter,如`SetEncodingFilters`,以...
这里,`hibernateconfig` 是指向`hibernate.cfg.xml`配置文件的引用,该文件通常包含了Hibernate的实体映射和数据库连接等信息。对于读和写两个数据源,我们需要创建对应的SessionFactory: ```xml <!-- (读)...
1. **配置数据源**:在Spring配置文件中定义数据源,可以使用Apache DBCP或C3P0等连接池来管理数据库连接。 2. **配置SessionFactory**:创建Hibernate的SessionFactory实例,这通常通过`LocalSessionFactoryBean`...
然后,按照特定顺序导入所需的jar包,包括Spring的核心包、AOP包、ORM映射包和Web包,Hibernate的核心包及数据库连接相关包,以及Struts的对应版本。在Eclipse中,这些可以通过“导入选项”完成。 在配置阶段,需要...
在Spring的配置中,使用了`OpenSessionInViewFilter`来处理数据库会话的生命周期。这个过滤器确保在每次HTTP请求中,都会有一个打开的Hibernate Session,以解决“懒加载”问题。配置中包含了`...
2. **数据库连接池配置**:使用`ProxoolListener`监听器,通过`propertyFile`参数指定数据库连接池的配置文件位置,实现数据库连接的管理。 3. **Spring上下文配置**:通过`contextConfigLocation`参数指定Spring...
Hibernate的注解如前所述,用于实体类和数据库的映射。 总结,SSH整合通过注解方式使得配置更加简洁,提高了开发效率。Struts2处理请求,Spring管理bean和依赖,Hibernate负责持久化,三者协同工作,构建出强大且...
- **proxool.properties**: 数据库连接池配置文件,定义了连接池的大小和其他参数。 - **applicationContext.xml**: Spring的核心配置文件,用于定义Bean和依赖注入关系。 ##### Web.xml详解 `web.xml`是项目的...
同时,为了保证页面显示的中文字符正常,需要正确配置OpenSessionInViewFilter和中文编码过滤器。 总的来说,用户菜单管理是一个涉及前端交互、后端逻辑和数据库操作的复杂功能模块。它需要开发者具备扎实的SSH框架...
但这种方法可能导致过多的数据库连接,因此也有其他解决方案,如OpenSessionInViewFilter和OpenEntityManagerInView。 6. **Hibernate的核心类**: - **Configuration**:负责读取配置信息,创建SessionFactory。 ...
在这个集成中,Spring可能被用来创建和管理数据库连接、事务、DAO(数据访问对象)以及业务服务等组件。例如,Spring的`@Autowired`注解可以自动装配所需的依赖。 然后是Hibernate,这是一个持久层框架,用于对象...
在使用这个压缩包时,开发者需要按照一定的顺序进行配置:首先设置Hibernate的连接信息和实体映射,然后在Spring中配置数据源、事务管理器和Hibernate SessionFactory,接着配置Struts2的动作类、结果类型和拦截器。...
SSH 框架 Ajax 获取的 JSON 格式数据处理过程 在本文中,我们将详细讲解如何使用 SSH 框架中的 Ajax 获取的 JSON 格式数据处理过程,并且实现菜单联动下拉框的功能。 一、Ajax 中 response 返回的数据是一个二维...
3. **数据源和SessionFactory配置**:定义数据源(DataSource)和Hibernate的SessionFactory,为Hibernate提供数据库连接。 4. **事务管理**:Spring的事务管理器配置,例如`PlatformTransactionManager`,可以控制...