该项目设计为 一个 item 下有多个 question ,而一个question 下有多个 answer 。因此,需多次循环查询数据库。
测试时,数据库连接池的最大数及最小数都设为 1.
测试发现,为getHibernateTemplate().getSessionFactory().openSession()时,web 页面无法正常显示(白板),此时别的业务逻辑如果需要连接数据库则都不能执行;查询 log4j 日志发现,没有打印出openSession()所在方法的sql。 后来改为 getHibernateTemplate().getSessionFactory().getCurrentSession()则web 页面显示正常。
getCurrentSession () 使用当前的session
openSession() 重新建立一个新的session
在一个应用程序中,如果DAO 层使用Spring 的hibernate 模板,通过Spring 来控制session 的生命周期,则首选getCurrentSession ()。
- 浏览: 309297 次
- 性别:
- 来自: 北京
最新评论
-
fanlei77:
很有用,谢谢
git branch -
han1051:
123123
Spring框架下PropertyPlaceholderConfigurer类 -
wangbing9577:
言简意赅。
代理模式 适配器模式 与 外观模式 区别 比较 特点 -
azheng270:
用户和权限为什么会有直接连线
通用权限管理系统设计篇(一) -
cectsky:
nice,i know ,thank you ~
Spring框架下PropertyPlaceholderConfigurer类
相关推荐
因此,即使使用`getCurrentSession()`,也应当在适当的时候调用Session的`close()`方法。 4. **异常处理**:如果在没有活动事务的情况下调用`getCurrentSession()`,Hibernate会抛出异常。在非容器管理的事务环境中...
在Java的Hibernate框架中,`getCurrentSession()` 和 `openSession()` 都是用于获取与数据库交互的Session对象,但它们之间存在显著的区别。理解这些差异对于优化数据访问性能和管理事务至关重要。 首先,`...
2. **为什么使用getCurrentSession()**:与直接调用`openSession()`创建新的Session相比,`getCurrentSession()`有以下优势: - 它能够自动管理Session的生命周期,比如在请求结束时关闭Session,避免资源泄露。 -...
本文详细介绍了 Hibernate 中 Session 的关闭实例解析,包括 getSession() 和 openSession() 的区别、getCurrentSession() 的配置、openSession() 和 getCurrentSession() 的关联,以及 Session 的关闭。希望本文...
标题中的“SessionFactory.getCurrentSession与openSession的区别”是关于Hibernate框架中的两个关键操作,它们都是用于在Hibernate中获取数据库会话的。理解它们的区别对于优化数据访问性能和管理事务至关重要。 ...
同时,还探讨了Hibernate框架中getCurrentSession()与openSession()的区别。 首先,要操作数据库中的Clob字段,需要关注的是如何在Java对象与Clob字段之间进行转换。由于Clob字段通常用于存储大量文本数据,如果...
当线程首次调用SessionFactory的`getCurrentSession()`,会创建并绑定新的Session,后续调用则返回已绑定的Session。提交或回滚事务时,Session会关闭。再次调用`getCurrentSession()`时,会创建新的Session。 2. *...
7. 测试整合:编写测试用例,验证Spring如何管理和调用Hibernate完成数据操作。 五、示例代码 例如,创建一个User实体类,对应的DAO接口和实现: ```java @Entity public class User { @Id @GeneratedValue...
Session session = HibernateSessionFactory.getCurrentSession(); Query q = session.createQuery("from City"); q.setCacheable(true); return q.list(); Session session = HibernateSessionFactory....
Session session = sessionFactory.getCurrentSession(); List<User> users = session.getNamedQuery("getUser").list(); return users; } } ``` 这样,我们就可以在业务逻辑中直接调用`UserService`的`getUsers...
- **作用**: `Session` 是 Hibernate 中的核心接口之一,它负责执行所有与数据库交互的操作,如保存、更新、查询和删除等。 - **生命周期**: 每个 `Session` 实例都有自己的生命周期,通常在一个事务或业务逻辑单元...
这样,我们就能够在业务逻辑层调用Hibernate的方法进行数据操作,而无需直接在Controller层处理数据库细节。 增(Create):在添加新记录时,我们通常会在Service层创建一个新的Java对象,设置其属性值,然后通过...
- 主要用于解决懒加载异常,将Hibernate Session与请求线程绑定,保证页面读取数据时Session开启状态。 - 遇到业务处理数据量大时,可能会引起内存溢出或者数据库连接问题。 - 解决方式可以考虑使用迫切左外连接...
而Hibernate则是一个强大的ORM工具,能够简化数据库操作,将Java对象与SQL数据库之间的交互变得更为直观。本教程将详细介绍如何整合Spring和Hibernate,以创建一个简单的工作示例。 首先,我们需要在项目中引入...
在本文中,我们将深入探讨如何将Spring Boot框架与Hibernate ORM集成,特别是在不使用JPA(Java Persistence API)的情况下。Spring Boot以其便捷的自动配置和简化Java应用开发而广受欢迎,而Hibernate作为Java领域...
Session session = sessionFactory.getCurrentSession(); session.save(user); session.flush(); } ``` 6. **Service层**:创建Service接口和实现类,这里是对业务逻辑的封装,调用DAO层的方法进行具体操作。...
然而,在CMT环境中,由于单个session bean可能会被多个线程并行调用,使用`SessionFactory`的`getCurrentSession()`方法更为推荐,因为它能自动管理`Session`的生命周期,并确保线程之间的隔离性。 总之,理解...