`
Josh_Persistence
  • 浏览: 1651241 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

Hibernate SessionFactory中openSession和getCurrentSession方法的区别

阅读更多

 

Hibernate中SessionFactory中的OpenSession和getCurrentSesion的区别以及异常No Session found for current thread的解决

 

1. Opensession打开一个新的Session,而getCurrentSession在当前有session的话,则是使用当前的session,没有的话则创建一个新的Session;

 


 

2. 如果使用Opensession获得一个session的话,需要手动关闭session,即调用session.close(),使用后者,当事务提交,即commit和rollback后,session会自动关闭,如果再关闭session则会报如下异常:Session has already closed;

 

如果使用getCurrentSession()出现异常No Session found for current thread,

有可能是没有在当前调用的类上使用事务注解:@Transactional

 

 

异常:如果使用getCurrentSession()出现org.hibernate.HibernateException:No CurrentSessionContext configured!

 

 

需要在hibernate.cfg.xml做如下配置:

<propertynamepropertyname="current_session_context_class" >thread</property>  

 

 

 

0
0
分享到:
评论

相关推荐

    新Hibernate SessionFactory().getCurrentSession()猫腻

    标题中的“新Hibernate SessionFactory().getCurrentSession()猫腻”指的是在使用Hibernate ORM框架时,一个常见但不为人熟知的细节,即SessionFactory().getCurrentSession()方法的使用。在深入讲解这个知识点之前...

    SessionFactory.getCurrentSession与openSession的区别

    标题中的“SessionFactory.getCurrentSession与openSession的区别”是关于Hibernate框架中的两个关键操作,它们都是用于在Hibernate中获取数据库会话的。理解它们的区别对于优化数据访问性能和管理事务至关重要。 ...

    getCurrentSession 与 openSession() 的区别

    在Java的Hibernate框架中,`getCurrentSession()` 和 `openSession()` 都是用于获取与数据库交互的Session对象,但它们之间存在显著的区别。理解这些差异对于优化数据访问性能和管理事务至关重要。 首先,`...

    ssh中getCurrentSession的使用

    在Hibernate中,`getCurrentSession()`是SessionFactory类的一个方法,它用于获取当前线程绑定的Session对象。这个方法在处理数据库操作时非常有用,因为每个HTTP请求通常对应一个独立的线程,每个线程都应该有自己...

    Hibernate4Spring3

    在Spring中,我们可以使用`SessionFactory.openSession()`或`SessionFactory.getCurrentSession()`方法获取Session实例。 4. **事务管理**:Spring提供了声明式事务管理,只需在方法上添加@Transactional注解,即可...

    HIBERNATE4开发文档,HIBERNATE4的变化

    - 错误2:`java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session` - 解决方案:由于Hibernate4移除了HibernateDaoSupport,需要改写DAO层,直接使用Hibernate...

    hibernate-spring整合

    在Spring中,我们可以使用SessionFactory的openSession()或getCurrentSession()方法获取Session实例。 4. **事务管理**: Spring提供PlatformTransactionManager接口,可以用来管理数据库事务。在Hibernate整合中,...

    hibernate.jar包

    - 获取Session:通过SessionFactory的openSession()或getCurrentSession()获取Session实例。 - 开启事务:在Session上开始一个新的数据库事务。 - 对象操作:执行增删改查操作,如save()、update()、delete()、...

    Spring与Hibernate集成中的session

    - 创建`Session`:`SessionFactory.openSession()`或`SessionFactory.getCurrentSession()`(在已配置的事务环境下)。 - 事务开始:`Session.beginTransaction()`。 - 数据操作:如`Session.save()`, `Session....

    hibernate关于session的关闭实例解析

    本文详细介绍了 Hibernate 中 Session 的关闭实例解析,包括 getSession() 和 openSession() 的区别、getCurrentSession() 的配置、openSession() 和 getCurrentSession() 的关联,以及 Session 的关闭。希望本文...

    开始冬眠_Hibernate教程

    - **创建(Create)**:在Hibernate中,创建新记录通常是通过调用Session的`save()`方法来完成的。 ```java Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); ...

    Hibernate的框架的总结

    本文详细介绍了Hibernate框架中的核心配置文件`hibernate.cfg.xml`及其配置项、映射文件`xxx.hbm.xml`,以及核心API如Configuration和SessionFactory的使用方法,并对C3P0连接池进行了简要说明。通过这些内容的学习...

    hibernate登录页面测试

    在Hibernate中,我们可以使用Session工厂(SessionFactory)和Session对象来实现。SessionFactory是线程安全的,用于创建Session对象,而Session是数据库会话,用于执行CRUD操作。 ```java private SessionFactory ...

    hibernate的事务核并发

    然而,在CMT环境中,由于单个session bean可能会被多个线程并行调用,使用`SessionFactory`的`getCurrentSession()`方法更为推荐,因为它能自动管理`Session`的生命周期,并确保线程之间的隔离性。 总之,理解...

    JAVAEE试题(含答案).docx

    6. Hibernate框架中的SessionFactory类:SessionFactory类提供了两个获得session的方法,分别是openSession()和getCurrentSession()。这两个方法的区别在于,openSession()方法可以在一个线程中使用不同的Session,...

    Java Hibernate4天学习笔记整理可用于提交作业

    通过SessionFactory.openSession()或getCurrentSession()方法获取Session实例。 五、持久化操作 1. 插入:使用Session的save()或saveOrUpdate()方法插入新记录。 2. 更新:调用Session的update()或saveOrUpdate()...

    hibernate 4.3.10 版本的笔记

    - `getCurrentSession()`方法则会在当前线程中获取一个Session,如果当前线程没有Session,则会自动创建一个新的Session。这种方式适用于需要跨多个方法调用的事务管理。 #### 四、Hibernate生命周期状态 - **瞬...

    Hibernate3.6(开发必看).pdf

    在这个例子中,首先通过SessionFactory获取当前的Session,然后调用Session的save方法将对象保存到数据库中。 2. 配置文件hibernate.cfg.xml的配置示例: ```xml &lt;hibernate-configuration&gt; &lt;!-- Database ...

    2020版Hibernate 12 道.pdf

    11. Hibernate中getCurrentSession和openSession的区别是什么? `getCurrentSession`是用于在已有的事务上下文中获取或创建Session,确保与当前事务的一致性。而`openSession`则是直接创建一个新的Session,不考虑...

Global site tag (gtag.js) - Google Analytics