3

我有一个 Oracle 11g 数据库,我通过 EclipseLink 2.3 连接到它。我的项目中的一个实体应该经常持久化(例如,每秒 10 次),这比其他实体要多。为了提高交易的性能,我在 pesistence.xml 中添加了以下行来激活批量写入。

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

但是,我认为它将打开所有实体的批量写入。我想问一下:

1) 除了将上述行添加到我的 persistence.xml 之外,我还需要更改我的 DAO 文件中的其他任何内容吗?

2) 如果批量编写对其他实体有任何不利之处,我如何才能在 EclipseLink 中只为一个实体打开批量编写?

3) 我应该保留值“JDBC”还是应该在属性中切换到“Oracle-JDBC”?

4

1 回答 1

2
  1. ,这个配置指令是启用批量写入所需的一切。

  2. 不可以,只能为每个持久性单元设置批量写入
    从理论上讲,您可以将持久性单元拆分为更小的部分,并仅为其中一个启用批量写入。但我不会那样做。我认为启用批量写入没有问题。

  3. 我会保留 JDBC。这是最兼容的(并且可能是经过最多测试的)方法。
    不同的是,Oracle-JDBC 使用 oracle 专有的原生批量写入,而 JDBC 则依赖 JDBC 标准。Oracle-JDBC 的性能可能会好一点,但很可能不值得这些缺点。
    但是,如果您担心插入性能,则应该测量差异。

顺便说一句:每秒 10 个实体恕我直言,这并不是一个很大的数字。一些应用程序每秒执行 1000 次持久化(或更多)。

于 2013-02-28T16:24:22.393 回答