Hibernate Play Framework 1.2.4:批量插入作业后关闭或断开会话?
我正在一个Play1.2.4项目中工作,我有4个作业间隔运行,从webservice获取批量数据并将它们保存到数据库中 我当前的批量插入方法如下所示:Hibernate Play Framework 1.2.4:批量插入作业后关闭或断开会话?,hibernate,jdbc,playframework,bulkinsert,Hibernate,Jdbc,Playframework,Bulkinsert,我正在一个Play1.2.4项目中工作,我有4个作业间隔运行,从webservice获取批量数据并将它们保存到数据库中 我当前的批量插入方法如下所示: org.hibernate.Session session = (org.hibernate.Session)MyEntityModel.em().getDelegate(); Transaction tx = session.beginTransaction(); int i = 0; for
org.hibernate.Session session =
(org.hibernate.Session)MyEntityModel.em().getDelegate();
Transaction tx = session.beginTransaction();
int i = 0;
for(Sales obj:sales)
{
convertToModelAndSave(obj);
i++;
if(i%100==0)
{
tx.commit();
session.flush();
session.clear();
tx=session.beginTransaction();
}
}
session.disconnect();
我只是在工作完成后断开会话
我想知道这对我来说是否足够,我是否真的需要断开会话(这会导致程序中出现异常)。断开连接后,我的数据库连接池会被释放吗?另一种方法是将您的工作分成两个作业
- 第一项工作是主要的,它将您的数据分成100个项目的块
- 第二种方法是获取一些项目并保存它们
在这种情况下,您还可以并行启动多个子对象以加快速度,这听起来是个不错的主意!,我将尝试并查看性能结果。这就是我完成所有这些工作的主要原因。谢谢,这实际上为我节省了很多错误处理时间。与其他方法不同,我也没有看到对性能的任何影响。我创建了一个主控程序,它将数据拆分成块并发送给工人作业。我使用worker.now()执行作业,因此它们也是并行的。