2013-04-23 55 views
0

我有3个实体,每个实体有5个成员字符串,我想为每个实体保留1000个记录。 当我做了性能测试entitymanager.commit()需要大约1.1秒, 我觉得这是太多时间了...... 有没有办法加快实体管理器的提交?加速实体管理器提交3000个记录

我正在使用Derby DB和eclipse链接。

+0

哪个JPA提供商? – 2013-04-23 08:20:55

+0

@ SamiKorhonen-编辑 - 即时通讯使用eclipselink – 2013-04-23 08:26:16

回答

3

您可以通过启用批处理获得最大收益,但还有其他优化应该考虑。您可以通过在persistence xml中为持久性单元设置以下属性来启用批处理:“eclipselink.jdbc.batch-writing”=“JDBC”。

我推荐阅读文章http://java-persistence-performance.blogspot.fi/2011/06/how-to-improve-jpa-performance-by-1825.html

+0

感谢萨米,但我有两个问题1.我应该知道如果从我的数据库工作良好,因为我使用Derby和后者我会使用MaxDB。 2.当我使用批处理时,实际上数据被插入到数据库我问它,因为我将它添加到persistance.xml中,我把断点放在entitymanager提交中,当我使用F6时我没有注意到主要区别 – 2013-04-23 09:58:52

+0

当插入批处理执行时会插入数据。在JPA批处理执行中(就像普通插入一样)可能会在持久和提交调用之间的任何时候发生。如果由于某种原因需要强制执行而不提交,则应使用entitymanager的刷新操作。如果您怀疑插入没有获得批处理,我会建议启用跟踪日志记录。 – 2013-04-23 12:23:14