3

EclipseLink2.3を介して接続するOracle11gデータベースがあります。私のプロジェクトのエンティティの1つは、他のエンティティよりも頻繁に(たとえば、1秒間に10回)永続化する必要があります。トランザクションのパフォーマンスを向上させるために、次の行をpesistence.xmlに追加して、バッチ書き込みをアクティブにしました。

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

ただし、すべてのエンティティのバッチ書き込みがオンになると思います。私は質問したい:

1)上記の行をpersistence.xmlに追加する以外に、DAOファイル内の他の何かを変更する必要がありますか?

2)バッチ書き込みが他のエンティティに不利な点を提供する場合、EclipseLinkの1つのエンティティに対してのみバッチ書き込みをオンにするにはどうすればよいですか?

3)値「JDBC」を保持する必要がありますか、それともプロパティで「Oracle-JDBC」に切り替える必要がありますか?

4

1 に答える 1

2
  1. いいえ、この構成ディレクティブは、バッチ書き込みを有効にするために必要なすべてのものです。

  2. いいえ、バッチ書き込みは永続性ユニットごとにのみ設定できます
    理論的には、永続性ユニットをより小さな部分に分割し、そのうちの1つに対してのみバッチ書き込みを有効にすることができます。しかし、私はそれをしません。バッチ書き込みを有効にしても問題はありません。

  3. JDBCを保持します。これは最も互換性のある(そしておそらく最もテストされた)アプローチです。
    違いは、Oracle-JDBCはOracle独自のネイティブバッチ書き込みを使用するのに対し、JDBCはJDBC標準に依存していることです。Oracle-JDBCのパフォーマンスは少し良くなるかもしれませんが、おそらく不利な点に値するものではありません。
    ただし、挿入性能が気になる場合は、差を測定する必要があります。

ところで:毎秒10エンティティは私見ですが、実際には大きな数ではありません。一部のアプリケーションは、1秒あたり1000(またはそれ以上)の持続を実行します。

于 2013-02-28T16:24:22.393 に答える