`
endual
  • 浏览: 3558173 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hibernage getcurrentsession

 
阅读更多

 

org.hibernate.HibernateException: No CurrentSessionContext configured

分类: Java(J2EE) 22人阅读 评论 (0) 收藏 举报
今天在测试的时候遇到了org.hibernate.HibernateException: No CurrentSessionContext configured!错误。。。找了半天,在百度上才发现是什么原因。。。 
初学hibernate,出现No CurrentSessionContext configured错误,检查了几次配置都没有发现问题,最后上网查找发现是配置文件的问题 
解决如下: 
    在集成Hibernate的环境下(例如Jboss),在hibernate.cfg.xml中session-factory段加入: 
<property name="current_session_context_class">jta</property>  
    在不集成Hibernate的环境下(例如使用JDBC的独立应用程序),在hibernate.cfg.xml中session-factory段加入: 
<property name="current_session_context_class">thread</property>  
加入了这句话什么测试类就可以运行了。。。。哎,这个错误我来记录下 
Java代码  收藏代码
  1. package  org.huawei.hibernate.junit;  
  2. import  java.util.Date;  
  3. import  org.hibernate.Session;  
  4. import  org.hibernate.SessionFactory;  
  5. import  org.hibernate.cfg.AnnotationConfiguration;  
  6. import  org.huawei.hibernate.Teacher;  
  7. import  org.huawei.hibernate.zhicheng;  
  8. import  org.junit.AfterClass;  
  9. import  org.junit.BeforeClass;  
  10. import  org.junit.Test;  
  11.   
  12. /**  
  13.  * @作者: 何枫  
  14.  * @日期: 2011-4-10下午11:57:04  
  15.  * @版本: V 1.0   
  16.  * @标题: SaveTest.java  
  17.  * @包名: org.huawei.hibernate.junit  
  18.  * @描述: TODO(用一句话描述该文件做什么)  
  19.  */   
  20.  public  class  SaveTest {  
  21.     private  static  SessionFactory sessionFactory;  
  22.       
  23.     @BeforeClass   
  24.     public  static  void  beforeClass() {  
  25.             sessionFactory = new  AnnotationConfiguration().configure().buildSessionFactory();  
  26.     }  
  27.     @AfterClass   
  28.     public  static  void  afterClass() {  
  29.         sessionFactory.close();  
  30.     }  
  31.     @Test   
  32.     public  void  testSaveWith3State() {  
  33.       
  34.         Teacher t = new  Teacher();  
  35.           
  36.         t.setName("何枫" );  
  37.         t.setTitle("middle" );  
  38.         t.setZhicheng(zhicheng.A);  
  39.         //t.setBirthDate(new Date());   
  40.         t.setDate(new  Date());  
  41.         //Session session = sessionFactory.openSession();   
  42.          /*  
  43.          * 在使用sessionFactory.getCurrentSession()是必须在hibernate的配置文件中加入  
  44.          * <property name="current_session_context_class">thread</property>   
  45.          */   
  46.        /**  
  47.          * openSession与getCurrentSession的区别是:  
  48.          * openSession每次都是新的,需要close  
  49.          * getCurrentSession从上下文找,如果有,用旧的,如果没有,建新的  
  50.          *  1.用途,界定事务边界  
  51.          *  2.事务提交自动close  
  52.          */   
  53.         Session session = sessionFactory.getCurrentSession();  
  54.         session.beginTransaction();  
  55.         session.save(t);  
  56.         System.out.println(t.getId());  
  57.         session.getTransaction().commit();  
  58.         //session.clear();   
  59.         System.out.println(t.getId());  
  60.     }  
  61.       
  62.        
  63.     public  static  void  main(String[] args) {  
  64.         beforeClass();  
  65.     }  
  66. }  

终于搞定了.学习软件开发是需要日积月累的。。。。更应正了一句最经典的话,,程序员是在错误中长大的! 
分享到:
评论

相关推荐

    ssh中getCurrentSession的使用

    在描述中提到的"ssh中getCurrentSession的使用",实际上可能是指在SSH集成框架中使用Hibernate框架时,获取数据库会话(Session)的方法。 在Hibernate中,`getCurrentSession()`是SessionFactory类的一个方法,它...

    新Hibernate SessionFactory().getCurrentSession()猫腻

    标题提到的"新Hibernate SessionFactory().getCurrentSession()猫腻"揭示了一个常见的使用误区或者说是陷阱,即不正确地使用SessionFactory的getCurrentSession()方法。这篇文章可能探讨了这个方法在实际应用中的...

    getCurrentSession 与 openSession() 的区别

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

    SessionFactory.getCurrentSession与openSession的区别

    理解 `SessionFactory.getCurrentSession()` 和 `Session.openSession()` 的区别对于优化和正确使用Hibernate至关重要。 首先,`SessionFactory` 是Hibernate中的一个接口,它是一个全局的、线程安全的工厂类,用于...

    java 调用存储过程列子

    ### Java调用Oracle存储过程详解 #### 一、概述 在Java编程中,尤其是在与数据库交互时,存储过程是一个非常重要的概念。通过调用数据库中的存储过程,可以提高应用程序的性能,并增强数据处理的安全性和复杂性。...

    Spring整合hibernate

    随着Hibernate的更新,特别是SessionFactory.getCurrentSession()的出现,可以直接在Spring的事务范围内获取和管理Session,使得直接使用HibernateAPI成为可能。 2. **使用SessionFactory.getCurrentSession()** ...

    hql的增删改查

    Session session = this.getCurrentSession(); // 使用save方法保存对象 session.save(item); // 提交事务 session.flush(); } ``` **解析:** - `getCurrentSession()`方法用于获取当前的`Session`实例。 - `...

    hibernate关于session的关闭实例解析

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

    hql增删改查

    在Hibernate中,`getCurrentSession`方法用于获取当前线程绑定的Session对象。这是进行HQL查询的基础,所有的HQL操作都需要在一个有效的Session中进行。 #### 2. 更新记录 (update()) `update()`方法用于更新...

    Hibernate存储Clob字段的方式总结

    同时,还探讨了Hibernate框架中getCurrentSession()与openSession()的区别。 首先,要操作数据库中的Clob字段,需要关注的是如何在Java对象与Clob字段之间进行转换。由于Clob字段通常用于存储大量文本数据,如果...

    Hibernate源代码分析

    在 getCurrentSession() 方法中,SessionFactoryImpl 将获取 Session 的工作委托给了 currentSessionContext.currentSession(),currentSessionContext 是什么?它是 org.hibernate.context.CurrentSessionContext ...

    SpringMVC增删改查

    Session session = sessionFactory.getCurrentSession(); session.save(user); } public void updateUser(User user) { Session session = sessionFactory.getCurrentSession(); session.update(user); } ...

    SSH中增删改查的思想之我见

    Session session = sessionFactory.getCurrentSession(); session.save(user); } } ``` #### 2. 查询(Read) 查询操作涉及从数据库中获取数据并展示给用户。根据需求的不同,查询可以分为单一记录查询和多记录...

    Hibernate源代码分析(一)

    从上面的代码可以看到,getCurrentSession 方法将获得 Session 对象的工作委托给了 currentSessionContext 对象。currentSessionContext 对象是当前 Session 的上下文环境,它负责管理当前 Session 对象的创建和管理...

    编程语言javaee试卷.pdf

    Session session = sessionFactory.getCurrentSession(); session.save(book); } @Override @Transactional public void delete(String ISBN) { Session session = sessionFactory.getCurrentSession(); ...

    J2EE考试题目及答案定义.pdf

    getCurrentSession创建的Session对象在事务回滚或事务提交后自动关闭,而openSession必须手动关闭。 七、Session中的load()和get()方法 load()和get()方法都是用于从数据库中读取记录的方法,但它们有所...

Global site tag (gtag.js) - Google Analytics