由于频繁插入事件,(这是一个聊天室程序) 它总是出现“异常: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设置,但它无法正常工作
谢谢!
答案 0 :(得分:0)
只需查看您的saveMethod()
,您就可以为每次保存调用创建configuration
和sessionFactory
。你可以简单地避免这种情况。
当您的应用程序启动时,您可以构建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();
// ...
}