Spring+hibernate
数据库连接泄漏问题
问题发现:
在
mysql
中用
show
processlist
命令查看连接的连接状态。
当访问数据库时,如果发现有
sleep
状态的连接,还在创建的新的连接,说明连接泄漏了。
问题原因
:
用
spring
托管
hibernate
一般是在
Dao
层使用
HibernateDaoSupport
类与数据库进行同步,如果使用
HibernateDaoSupport
中的
getSession()
方法进行操作,则会导致数据库连接不能释放,如果设置了连接池,连接池就会得不到用完的连接(虽然查看该连接状态是
sleep,
但该连接不会放回到连接池中),多次后,会报连接池满的错误。
getSession()
这个方法本身其实返回的是与当前事务绑定的
Session
对象,在
HibernateDaoSupport
中使用,
HibernateDaoSupport
本身是不负责对这个
Session
对象进行关闭的,所以在其中有一个对应的
releaseSession()
方法必须手动操作,用于关闭
Session
。
解决方案:
用
getHibernateTemplate()
方法获得
hibernateTemplate
对象代替
session
对象进行数据库操作。
a)
getHibernateTemplate()
.save()/delete()
等常用操作
b)
getHibernateTemplate
().bulkUpdate(sql
语句
)
执行
sql
语句
c)
hibernate
回调:
i.
getHibernateTemplete().executeFind()
ii.
getHibernateTemplete().execute()
分享到:
相关推荐
在数据库连接配置方面,Spring的`applicationContext.xml`或类似的配置文件中会包含数据库连接池和数据源设置。 5. **视图层**:视图通常是JSP页面,负责展示登录表单和结果。登录表单可能包含用户名和密码输入框,...
同时,Spring还提供了与Hibernate的集成,使得数据库操作更加便捷。 Hibernate是一个对象关系映射(ORM)工具,它允许开发者使用Java对象来操作数据库。在这个注册登录系统中,Hibernate负责将用户信息持久化到...
该系统采用经典的Java开发技术,结合Spring、Struts1.2和Hibernate三大框架,构建了一个功能完备、稳定可靠的选课平台。 首先,Spring框架作为核心的依赖注入(DI)和面向切面编程(AOP)容器,负责管理应用中的...
总之,Proxool连接池在Struts2、Spring和Hibernate集成项目中提供了高效、可靠的数据库连接管理。正确配置和使用Proxool能够显著提升系统的性能和稳定性,同时降低了数据库的压力。通过监控和调整,开发者可以根据...
`hibernate.cfg.xml`用于配置Hibernate连接数据库的信息和映射文件位置。 2. **过滤器设置**:在`web.xml`中,除了Struts2的过滤器`FilterDispatcher`外,还添加了`ActionContextCleanUp`过滤器,用于在请求结束后...
Spring还提供了HibernateTemplate或JpaTemplate,它们是用于执行Hibernate操作的便捷工具,可以帮助我们避免直接操作Session,减少可能出现的资源泄露。 整合Spring和Hibernate的关键在于使用Spring的Transaction ...
Hibernate与Spring的集成则通常通过Spring的HibernateTemplate或SessionFactory来完成,Spring可以帮助管理Hibernate Session,避免资源泄露。 在实际项目中,SSH集成的优势体现在以下几个方面: - **模块化**:每...
Struts2、Spring4和Hibernate4是Java Web开发中的三个核心框架,它们分别负责MVC模式中的表现层、业务层和服务层。SSH(Struts2、Spring、Hibernate)的整合是构建高效、灵活的企业级应用的常用方式。下面将详细阐述...
- 数据库连接管理不当,导致资源泄露。 - 查询语句或分页参数设置不合理。 - **优化建议**: - 使用连接池管理数据库连接,确保连接的正确释放。 - 对查询语句进行优化,避免全表扫描。 - 在前端增加对分页参数...
Spring是一个全面的Java企业级应用开发框架,而Hibernate是一个流行的Object-Relational Mapping(ORM)工具,使得开发者可以使用面向对象的方式处理数据库操作。 **Spring框架**:Spring的核心特性包括依赖注入...
总结,欣想电子商城项目是一个全面展示Java Web开发技术的实例,涵盖了Spring框架的使用、Hibernate的数据持久化和SQL Server的数据库管理。通过学习和研究这个项目,开发者可以深入了解这些技术的实战应用,提升...
该项目是一款基于Java技术栈开发的项目申报系统,主要使用的技术框架包括Struts2、Spring、Hibernate以及前端技术JSP,并且数据库采用的是MySQL5。这些技术都是Java Web开发领域的经典组合。 #### 二、关键技术框架...
Spring+Hibernate】是一个基于Java Web技术开发的短信服务系统,其核心设计采用了Spring框架作为整体应用的结构管理和依赖注入容器,以及Hibernate作为对象关系映射(ORM)工具来处理数据库操作。这个项目旨在提供一...
SSH(Struts1.3+Spring2.0+Hibernate3.1)是一个经典的Java Web开发框架,用于构建高效、可扩展的企业级应用。这个框架整合了三个强大的开源框架:Struts作为表现层,Spring作为控制层和业务层,以及Hibernate作为...
- **资源泄漏**:不正确关闭数据库连接或Session,可能导致资源泄漏,需要确保在操作完成后及时释放。 为了解决这些问题,开发者应仔细阅读官方文档,理解每个框架的工作原理,并通过单元测试和集成测试来确保各...
通过这种方式整合Spring和Hibernate,我们可以避免直接在代码中创建SessionFactory和Session,从而减少资源泄漏的风险,同时借助Spring的事务管理能力,简化事务处理。这种整合方式使得系统更加模块化,更易于维护和...
3. Hibernate的配置文件(hibernate.cfg.xml)中,配置数据库连接、实体类映射等信息。Spring的配置文件中也需要配置SessionFactory,以便管理Hibernate的会话。 4. 在业务层(Service)和DAO层,使用Spring的注解...
2. **SessionFactory和Session管理**:Spring可以帮助管理Hibernate的SessionFactory和Session,确保正确关闭资源,防止内存泄漏。 3. **DAO层支持**:Spring的Template模式(如HibernateTemplate或JdbcTemplate)...
5. **配置Hibernate**:创建hibernate.cfg.xml,配置数据库连接信息和实体类映射。 6. **创建实体类**:定义Java类,并使用Hibernate注解进行映射。 7. **编写DAO和Service**:实现数据访问和业务逻辑。 8. **配置...
6. **错误处理**:Spring的JDBC抽象层处理了许多底层的错误,比如关闭资源等,这使得代码更加健壮,避免了常见的数据库连接泄漏问题。 7. **DataSource配置**:在Spring中,我们需要配置一个DataSource,它是数据库...