我想减少休眠会话的开销(以提高性能,因为会话需要太多时间来处理其存储的对象)并尝试使用无状态会话:
statelessSession.createQuery(
"SELECT me, me.mailSourceFile, me.linf " +
"FROM MessageEntry me " +
"WHERE me.mailSourceFile.archive.folder = :folder " +
"ORDER BY me.messageLength DESC")
.setString("folder", folder)
.scroll(ScrollMode.FORWARD_ONLY);
但是 .scroll(...) 给出
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at com.mysql.jdbc.Buffer.<init>(Buffer.java:59)
at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1477)
at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:2936)
at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:477)
...
我的代码没有 memleaks,它可以与 Session 和 .iterator() 一起正常工作。我还应该如何使用无状态会话来避免崩溃?
谢谢。