在spring+hibernate的时候,控制台提示“unclosed connection,forgot to call close() on your session?”
或者是[org.hibernate.jdbc.ConnectionManager] - <finalizing with closed connection>
那是因为有可能是你自己手动创建了session,比如:
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory from hibernate.cfg.xml
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
然后调用:
Session session = sessionFactory.openSession();
Query query = session.createQuery("from Login");
类似这样的单独使用hibernate时的用法,是需要手工去关闭session的。没有关闭的话就会收到那样的警告。
所以最好是使用spring管理的session,和OpenSessionInViewFilter,比如:
Session session =this.getSession();
然后在web.xml里加入
<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
其中在spring里注册的sessionfactory必须是id="sessionFactory",如果是id="SessionFactory"或者其他,会提示sessionFactory没有注册的错误,因为OpenSessionInViewFilter里注册的名必须为sessionFactory。
分享到:
相关推荐
Spring MVC 负责处理HTTP请求并将其路由到相应的控制器,Spring 提供了依赖注入(DI)和面向切面编程(AOP),简化了代码管理与模块化,而Hibernate则是持久层框架,负责数据库操作,提供了对象关系映射(ORM)功能...
TransactionSynchronizationManager.bindResource(sessionFactory, new SessionHolder(hibernateSession)); ``` 然后,在类中加入以下两个私有函数: ```java private SessionFactory lookupSessionFactory...
此外,Spring还可以与Hibernate集成,实现数据访问层的事务管理。 **Hibernate** Hibernate是一个对象关系映射(ORM)框架,它简化了数据库操作,将Java对象和数据库记录进行映射,使得开发者可以使用面向对象的...
- **Session** 是Spring的事务管理中重要的概念,它通常与用户的会话相关联,通过它可以管理用户的会话信息和进行事务控制。 - **DAO(Data Access Object)** 是数据访问层的抽象,提供了数据访问的统一接口,...
在这个项目中,"struts+spring+hibernate(mysql)用户登录及文件上传",开发者整合了这三个框架,并结合MySQL数据库实现了一个完整的用户管理系统,包括用户身份验证和文件上传功能。 首先,Struts是MVC(Model-View...
Spring的JDBC模板或者Hibernate的Session接口可以用来与MySQL进行交互。 在实际开发中,这五个组件协同工作,形成一个完整的三层架构:表现层(JSP)、业务层(Spring)和数据访问层(Hibernate)。Struts2接收用户...
在Spring和Hibernate的整合中,Spring可以作为Hibernate的容器,管理SessionFactory和Transaction,这样我们就能够在Spring的管理下进行数据库操作。通过@PersistenceContext注解,Spring可以注入EntityManager,@...
Spring MVC的Controller接收这些信息,然后通过Hibernate的Session接口创建新的用户对象并保存到数据库。 2. **验证**:在注册过程中,可能需要验证用户名的唯一性,这通常通过查询MySQL来实现,确保没有重复的...
Spring作为一个全面的开发框架,提供了依赖注入、AOP(面向切面编程)、事务管理等核心功能,而Hibernate则是一个优秀的对象关系映射(ORM)框架,使得Java开发者可以更加方便地操作数据库。在本案例中,我们将探讨...
通过这种方式,开发人员可以利用Struts2的控制层、Spring的服务层管理和依赖注入,以及Hibernate或Ibatis的数据访问能力,构建出高效且可扩展的Web应用。这些整合示例可以帮助初学者快速理解各个组件的交互方式,...
总的来说,"Spring+Hibernate整合+SQL Server2008"是一个典型的Java企业级应用开发模式,它涵盖了Spring框架的管理能力、Hibernate的ORM功能以及SQL Server的数据库服务,为开发人员提供了一种高效、稳定且易于维护...
1. **依赖注入**:Spring 提供的 DI(Dependency Injection)机制可以帮助管理 Hibernate SessionFactory 和 Session 实例,避免手动创建和管理这些对象。在配置文件中定义 SessionFactory 的 Bean,然后通过注解或 ...
DAO通过Spring管理的HibernateSession与数据库进行交互,执行查询和更新操作。整个过程流畅且高效,使得开发者能专注于业务逻辑,而非底层实现。 在提供的文档“webwork+spring+hibernate架构.doc”中,可能详细...
ZK、Spring和Hibernate是Java开发中的三大重要框架,它们分别在用户界面、依赖注入与事务管理、持久层操作方面发挥着关键作用。将这三者进行整合,可以构建出高效、稳定且易于维护的企业级应用。以下是对这三者整合...
同时,Hibernate的SessionFactory和Session对象也会在Spring中配置,使得业务层可以方便地进行数据库操作。Spring还负责管理Hibernate的事务,确保数据一致性。 总结来说,SSH框架组合提供了一个强大且灵活的Java ...
这个"Strut+Spring+Hibernate注册登录系统"是一个基础的Web应用程序,旨在帮助初学者理解如何将这三个框架集成并实现用户管理功能。 Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,负责...
- 整合DWR与Hibernate:DWR可以调用Spring管理的bean,这些bean可以进一步调用Hibernate的Session进行数据库操作。通过这种方式,DWR可以直接与数据库交互,实现动态的数据展示和更新。 总结起来,DWR+Spring+...
在Spring+Hibernate的集成中,Spring可以作为Hibernate的事务管理器,处理事务的开始、提交、回滚等操作。通过SessionFactory和Session接口,Hibernate可以进行对象持久化,将Java对象转换为数据库中的记录。 **...
Spring管理Hibernate SessionFactory,提供事务控制,并能通过声明式事务管理简化事务处理。此外,Spring还支持基于注解的Hibernate配置,使代码更加简洁。 Spring MVC与Ajax的结合则提高了用户体验。Ajax...
为了整合SpringMVC、Spring和Hibernate,你需要在Spring的配置文件中引入Hibernate的相关配置,如数据源、SessionFactory以及事务管理器。同时,你还需要配置一个Hibernate的本地SessionFactory Bean,以便Spring...