2013-02-28 63 views
3

我有一個Oracle 11g數據庫,通過EclipseLink 2.3連接到它。我的項目中的一個實體應該經常堅持(例如,每秒10次),這比其他實體更多。爲了提高我的事務處理性能,我在pesistence.xml中添加了以下行來激活批處理寫入。EclipseLink 2.3加上Oracle 11g批處理

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

但是,我認爲它會打開所有實體的批處理。我想問:

1)除了在我的persistence.xml中添加上面的行,我需要改變我的DAO文件中的其他任何東西嗎? 2)如果批量寫入爲其他實體提供了任何缺點,我如何才能在EclipseLink中爲一個實體啓用批量寫入?

3)我應該保留值「JDBC」還是應該在屬性中切換到「Oracle-JDBC」?

回答

2
  1. 沒有,這樣的配置指令是需要啓用批量寫入的一切。

  2. 不,批量寫入只能設置每個持久性單元
    理論上你可以將你的持久化單元分成更小的部分,並且只能爲其中的一個寫入批處理。但我不會那樣做。我發現批量編寫沒有問題。

  3. 我會保持JDBC。這是最兼容的(也可能是最受測試的)方法。
    不同之處在於Oracle-JDBC使用Oracle專有的本地批處理寫入,而JDBC依賴於JDBC標準。 Oracle-JDBC的性能可能稍微好一些,但最有可能不值得的缺點。
    但是,如果您擔心插入性能,則應該測量差異。

BTW:每秒10個實體是恕我直言,不是一個真正的大數目。一些應用程序每秒鐘會持續1000次(或更多)。

+0

整齊的和最新的答覆。謝謝。 – 2013-03-01 08:33:00

+0

根據[本文](http://java-persistence-performance.blogspot.de/2013/05/batch-writing-and-dynamic-vs.html) - 讓我引用:_「Oracle-JDBC」的用法Oracle數據庫JDBC API早於JDBC標準API,現在已經過時。在EclipseLink 2.5之前,此選項允許在使用樂觀鎖定時進行批量編寫,但現在常規「JDBC」選項支持樂觀鎖定。 – zb226 2015-02-25 10:06:04