10个实体的持久数据需要12秒

时间:2013-04-27 16:43:44

标签: java multithreading jpa eclipselink

我正在使用带有derby DB或MaxDB的eclipse链接,当我进行性能测试以保存10个实体的数据时,每个记录有1000个记录,这需要12.9秒,我的代码需要0.9和实体的提交使用JPA的经理大约需要12秒。

1.对于10,000条记录,时间将是12秒吗?

2.我读到有选项使用

<property name="eclipselink.jdbc.batch-writing" value="JDBC" />

使用它有什么缺点?日志记录是如何工作的?

3.使用Thread进行提交是怎么回事?

2 个答案:

答案 0 :(得分:2)

  1. 如果它足够快你就可以了。只有你知道。您可以将它与使用JDBC手动编写的代码进行比较。但是不要忘记还要考虑代码的可维护性和正确性以及编写和测试代码所需的时间。硬件很便宜。开发人员不是。请注意,您测试的用例(在大量表中插入大量行)在大多数典型应用程序中并不是非常常见的用例,并且不适合JPA,后者通常用于实现短交易(如购买)一本关于亚马逊的书,或在博客中添加一条消息,等等。

  2. 不知道。

  3. JPA实体管理器不是线程安全的,当前事务通常与当前线程相关联。您无法在线程中启动事务并将其提交到另一个事务中。

答案 1 :(得分:0)

您绝对应该启用批量写入(并确认您的数据库/驱动程序支持它)。

请参阅,

http://java-persistence-performance.blogspot.com/2011/06/how-to-improve-jpa-performance-by-1825.html