在hibernate中插入大量记录的最佳方法

all*_*skd 11 java hibernate batch-processing

我正在使用hibernate + play!工作中的框架,是否有使用hibernate插入大量记录的"最佳实践"?它们每个文本文件大约有6,000到10,000个,因此我不知道Hibernate是否会在工作中窒息或抛出异常.

任何建议让我知道,如果我需要解释更多,请告诉我

Kar*_*och 24

从*Java Persistence和Hibernate(Manning)并遵循Pangea的注释,使用无状态会话(没有持久性上下文缓存):

StatelessSession session = sessionFactory.openStatelessSession();
Transaction tx = session.beginTransaction();
for ( int i=0; i<100000; i++ ) {
    Item item = new Item(...);
    session.insert(item);
}
tx.commit();
session.close();
Run Code Online (Sandbox Code Playgroud)

  • 我应该提一下,新的`StatelessSession类'不提供(保存,刷新,清除).它非常简单,它将是`session.insert(item)`然后commit和session.close() (5认同)
  • 我不会使用Session进行批量操作.StatelessSesssion用于执行这样的批量操作,因为它不维护第一级缓存:将"sessionFactory.openSession()"更改为"sessionFactory.openStatelessSession()".从这里阅读"13.3"部分http://docs.jboss.org/hibernate/core/3.3/reference/en/html/batch.html (4认同)
  • 对我来说,在使用sessionFactory.openStatelessSession()时,`Session`应该是`StatelessSession`; (2认同)