問題タブ [toplink]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
6749 参照

java - JPA/Toplink を使用したバッチ挿入

HTTP インターフェイスを介してメッセージを受信する Web アプリケーションがあります。

このリクエストには、送信者の ID、受信者の ID、およびメッセージのテキストが含まれています。

このメッセージは次のように処理する必要があります。

  • ソースと宛先の両方に一致する User オブジェクトをデータベースから検索する
  • オブジェクトのツリーの作成: メッセージ テキスト用のフィールドと、ソースと宛先用の 2 つの User オブジェクトを含む Message
  • このツリーをデータベースに永続化します。

ツリーは、私が触れることができない他のアプリケーションによって読み込まれます。

Oracle をバッキング データベースとして使用し、JPA と Toplink をデータベース処理タスクに使用しています。可能であれば、私はこれらにとどまります。

多くの最適化を行わなくても、私の環境では最大 30 リクエスト/秒のスループットを達成できます。それほど多くはありません。1 秒あたり約 300 リクエストが必要です。そのため、パフォーマンスのボトルネックがどこにあるかを測定したところ、呼び出しにem.persist()ほとんどの時間がかかっていることがわかりました。その行を単にコメントアウトすると、スループットは 1000 リクエスト/秒をはるかに超えます。

簡単な JDBC 呼び出しを使用して同じデータベースに 100 万のメッセージを永続化する小さなテスト アプリケーションを作成しようとしました。バッチ処理を使用しました。つまり、100 回の挿入とコミットを行い、すべてのレコードがデータベースに入るまで繰り返しました。このシナリオで 1 秒あたり約 500 リクエストのスループットを測定しましたが、これは私のニーズを満たすものでした。

ここで挿入パフォーマンスを最適化する必要があることは明らかです。ただし、前述したように、純粋な JDBC ではなく、JPA と Toplink を引き続き使用したいと考えています。

JPA と Toplink を使用してバッチ挿入を作成する方法を知っていますか? JPA 永続化のパフォーマンスを向上させるための他の手法をお勧めできますか?

追加情報:

「リクエスト/秒」とは、リクエストの合計数 / テストの開始からデータベースに書き込まれた最後のレコードまでの合計時間を意味します。

em.persist()サーブレットとパーシスタの間にメモリ内キューを作成して、非同期呼び出しを試みました。パフォーマンスに大きく貢献しました。ただし、キューは非常に急速に増加し、アプリケーションは 1 秒あたり最大 200 のリクエストを継続的に受信するため、これは私にとって受け入れられる解決策ではありません。

この分離されたアプローチではem.persist()、トランザクションをコミットする前に、100 ミリ秒のリクエストを収集し、収集したすべてのアイテムを呼び出しました。EntityManagerFactory は、各トランザクション間でキャッシュされます。

0 投票する
6 に答える
21073 参照

java - Hibernate/JPA/Toplink をいつ使用するか?

現在、私は非常にシンプルなウェブサイトを作成しています - 約 5 ページです。問題は、ある種のデータベース マッピング ソリューションを統合するのはやり過ぎであり、時間をかける価値があるのか​​、それとも単純な古い JNDI を使用した方がよいのかということです。データベースから読み取り/書き込みを行う必要があるものがおそらく 10 個ほどあるでしょう。これらのテクノロジーの基本的な理解はあると思いますが、ドキュメントを参照するにはまだ多くの時間が必要です。以前に決定に直面した人はいますか?

編集:申し訳ありませんが、DB接続を検索するためにJNDIを指定し、操作を実行するためにJDBCを指定する必要がありました。

0 投票する
3 に答える
59262 参照

java - すべての EntityManager を close() する必要がありますか?

自家製の永続化フレームワークを JPA に移行し始めたところです。

永続化フレームワークが多くの配管を隠していることを考えると、EntityManagers を閉じないとリソース リークが発生するかどうか、またはフレームワークがそれらを収集して閉じるかどうかを知りたいと思っています。

私はすべての場所でそれらを閉鎖するつもりですが、そうしなければなりませんか?

現時点では、NetBeans で簡単に動作するという理由だけで TopLink を使用していますが、喜んで他の JPA プロバイダーを調査します。

0 投票する
4 に答える
506 参照

primary-key - 主キーを GUID に変換した後、パフォーマンスを修正するにはどうすればよいですか?

ORM として TopLink を使用し、DB として MySQL を使用しています。

テーブルの 1 つで、自動インクリメント主キーを GUID と交換しました (まあ、そうではありません。実際にはランダムな 64 ビット整数を使用していますが、それで十分です)。

とにかく、キーさえ使用しないクエリは、はるかに時間がかかります。

私に何ができる?

0 投票する
1 に答える
295 参照

java - JDeveloperのToplink Mapノードの下にToplinkオブジェクトが表示されない

何らかの理由で、TL マップの下に生成されたオブジェクトが表示されません。含まれている画像を参照してください (申し訳ありませんが、コミュニティ wiki ソフトウェアを使用するとレンダリングされません..

http://img261.imageshack.us/my.php?image=nothingundernodetn5.png

0 投票する
11 に答える
73723 参照

java - JPAで列挙型を使用する方法

映画レンタル システムの既存のデータベースがあります。各映画には評価属性があります。SQL では、制約を使用して、この属性の許容値を制限していました。

制約をオブジェクトの世界にマッピングするには、Java 列挙型を使用するとよいと思います。ただし、"PG-13" と "NC-17" の特殊な文字のため、許可された値を単純に取得することはできません。そこで、次の列挙型を実装しました。

toString() メソッドを使用すると、方向 enum -> String は正常に機能しますが、String -> enum は機能しません。次の例外が発生します。

[TopLink 警告]: 2008.12.09 01:30:57.434--ServerSession(4729123)--例外 [TOPLINK-116] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DescriptorException 例外の説明: フィールド [FILM.RATING] の値 [NC-17] に変換値が指定されていません。マッピング: oracle.toplink.essentials.mappings.DirectToFieldMapping[rating-->FILM.RATING] 記述子: RelationalDescriptor(de.fhw.nsdb.entities.Film --> [DatabaseTable(FILM)])

乾杯

ティモ

0 投票する
3 に答える
45620 参照

java - JPA 実装 - 使用するのに最適なのはどれですか?

以下の JPA 実装を利用しました。

  1. 冬眠、
  2. トップリンク、
  3. OpenJPA

それぞれに独自の長所と短所があります。Hibernate は 3 つの中で最も先進的であることがわかりましたが、Hibernate は独自の拡張機能のいくつかを JPA と混合していたため、他のプロバイダーへの切り替えが困難でした。最も重要なことは、JPA を解釈するときのクエリ パーサーがはるかに寛大であることです。すべての依存関係の適切なバージョンを取得しようとするのが使命であることがわかったため、休止状態をサポートするための適切なライブラリを取得するのが少し難しくなります。

Toplink は問題ありませんでしたが、オラクルが使用/購入を望んでいるように見えるため、少し不自由な感じが残っていますか? 彼らのより高度なライブラリ。jarファイルを実行してインストールする必要があるため、ダウンロードを試みることも使命でした. ベースの JPA 仕様のみを実装していることがわかりました。私がそれを使用した理由は、休止状態が他のオープンソースプロジェクトで一般的に使用されている多くのライブラリを使用していたため、特に JBoss を使用する場合にクラスローダーの問題が発生することがよくあるからです。

OpenJPA - これには最高のドキュメントがあり、ダウンロードして使用するのは簡単ですが、非常にバグが多いようです。たぶん私のコードだけかもしれませんが、CascadeType.all セットとの OneToMany 関係など、より高度な使用法を見つけたコードは機能していないようです。確かに、私のコードが間違っていた可能性があり、クリーンなケースをテストする時間はありませんでしたが、このような多くのインシデントにより、コードを使用するのが怖くなりました。良くなることを本当に願っています。そのエラー メッセージは、問題の解決に役立たないことがよくあります。

人々が使用した他のライブラリは何ですか? また、どのライブラリが好まれていますか? その理由は?

0 投票する
1 に答える
172 参照

jakarta-ee - OC4J - トップリンク 10/11 同時に?

OC4Jアプリケーション・サーバー内で、toplink v. 10 (toplink Essentials) とtoplink v. 11 (eclipselink) の両方を同時に使用できますか?

どちらも JPA の異なる実装です。Bean jar が使用する実装を自分で選択できるように、両方の実装を OC4J アプリケーション サーバーに追加できるかどうか疑問に思っていました。

「~だと思います」「動くはず」「マニュアルを読んでください」「仕様によると・・・」などの回答ではなく、実際の経験と知識のみでお願いします。

0 投票する
7 に答える
20342 参照

gwt - JPA を使用した GWT

GWT 1.5.3 を使用してデータベース アプリケーションを構築しようとしています。オブジェクトで JPA アノテーションを使用します。ホスト モードでは、GWT の RPC が正常に動作しているようです。しかし、GWT コンパイラを使用してアプリをコンパイルしようとすると、「インポート javax.persistence を解決できません」、「エンティティをタイプに解決できません」などのエラーが表示されます。toplink-essentials.jar は既にプロジェクト パスに含まれています。この問題を解決するには、他にどのような設定が必要ですか?

0 投票する
4 に答える
5188 参照

hibernate - 落とし穴と実用的なユースケース: Toplink、Hibernate、Eclipse Link、Ibatis

JPA 実装として Hibernate をよく使用しました。ほとんどの場合、問題なく動作します。しかし、私は多くの落とし穴も見てきました。

  • Hibernate は Java コレクションを独自のコレクション実装に置き換えるため、永続化されたオブジェクトを使用したリモート処理は困難です。したがって、すべてのクライアントには Hibernate .jar ライブラリが必要です。LazyLoading 例外などに注意する必要があります。この問題を回避する 1 つの方法は、Web サービスを使用することです。
  • ダーティ チェックは、ロックなしでデータベースに対して実行されます。
  • 「遅延 SQL」は、データ アクセスが ACID に準拠していない原因となります。(失われたデータ...)
  • 暗黙の更新 >> したがって、オブジェクトが変更されているかどうかはわかりません (コミットによって更新が発生します)。

Toplink、Eclipse Link、および Ibatis に同様の問題はありますか? いつ使用する必要がありますか? 彼らは同様のパフォーマンスを持っていますか?Hibernate よりも Eclipse Link/Toplink を選択する理由はありますか?