hibernate - 不能在方法之外运行“cfg.configure()”吗?

时间:2013-12-07 15:37:15

标签: java hibernate

由于频繁插入事件,(这是一个聊天室程序) 它总是出现“异常:java heap outOfMemory ....”

我认为这是因为这里的原因

这是我的正确代码

public static boolean saveMethod(String userid,String username,String msg){
    Configuration cfg = new Configuration();
    cfg.configure(); //here is correct
    SessionFactory factory = cfg.buildSessionFactory();
    Session session = factory.openSession();
    Transaction tx = null;
    tx = session.beginTransaction();
    Transaction transaction = null;
    try{
        ....jump

    transaction = session.beginTransaction();
    session.save(saveMsg);
        transaction.commit();
        return true;
    }catch(Exception e){
        return false;
    }

}

所以我将方法更改为

    Configuration cfg = new Configuration();
    cfg.configure();// error here
    SessionFactory factory = cfg.buildSessionFactory();
    Session session = factory.openSession();
    Transaction tx = null;
    tx = session.beginTransaction();
    Transaction transaction = null;
    public static boolean setPublicMsg(String userid,String username,String msg){
        //insert
    }
  

令牌“configure”上的语法错误,此后预期的标识符   令牌

我怎么写在这里? 或者有人对hibernate中的“异常:java heap outOfMemory ....”有所了解吗?

我正在尝试更改tomcat设置,但它无法正常工作

谢谢!

1 个答案:

答案 0 :(得分:0)

只需查看您的saveMethod(),您就可以为每次保存调用创建configurationsessionFactory。你可以简单地避免这种情况。

当您的应用程序启动时,您可以构建sessionFactory一次,并根据需要重复使用。

例如,您可以使用HibernateUtil类获取sessionFactory,如下所示。

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

    private static SessionFactory sessionFactory;

    public static SessionFactory getSessionFactory() {
        if (sessionFactory == null ) {
            sessionFactory = new Configuration().configure().buildSessionFactory();
        }
        return sessionFactory;
    }
}

然后在您的saveMethod()中,您可以获得sessionFactory,如下所示。

public static boolean saveMethod(String userid,String username,String msg){
    SessionFactory factory = HibernateUtil.getSessionFactory();
    // ...
}