問題タブ [entitymanager]

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 に答える
1063 参照

java - JPA/hibernate EntityManager と EJB3.0 を使用してジェネリックを実装する方法は?

ビジネス ロジックを保持する slsb があります。ジェネリックを使用して、次の 3 つのメソッドを 1 つのジェネリック メソッドに変更するにはどうすればよいですか? 最初の 2 つは同じデータベースで、3 番目は別のデータベースです。また、トランザクションに関連してメソッドにさらに注釈が必要ですか?

よろしくお願いします。乾杯!

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

hibernate - Hibernate v3.6 : EntityManager メソッド "refresh" に関する問題

次のコードは、「em.refresh(p)」を呼び出すときに例外をスローします。

コードをデバッグすると、6 行目で Hibernate がレコードを DB に書き込んでいないことがわかります。

7 行目で、次の例外が発生します: Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.HibernateException: this instance does not still exist as a row in the database

6 行目で Hibernate に強制的にレコードを DB にフラッシュさせると、INSERT が実行され、エラーは発生しません。select を実行するか、単にフラッシュを強制することでこれを行うことができます (すべての結果を伴います)。

私の質問:メソッド「リフレッシュ」は、前に配置されたselectまたはflushステートメントのように、HibernateにレコードをDBに強制的に書き込まないようにする必要がありますか? (これはバグでしょうか?)。

ご回答ありがとうございます。

ピエール

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

orm - EntityManager (JPA) L1 または L2 キャッシュ サイズに制限を設定する方法

L1 または L2 キャッシュのサイズ制限を設定する方法。キャッシュサイズを増やすことを懸念しています。1 つの方法は、キャッシュのタイムアウトを定義することですが、キャッシュ サイズの制約を作成できるかどうかを知りたいですか?

RGDSナビ

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

java - JPA2-JavaSEでのEntityManagerの使用-いくつかの質問

JavaSE環境でのエンティティマネージャの使用に関していくつか質問があります。

リポジトリパターンを使用して、データベースでCRUD操作を実行しています。次のような基本リポジトリクラスがあります。

次に、リポジトリを継承するEmployeeRepositoryのようなクラスがあります。これらのリポジトリクラスは、私のサービスレイヤーに作成されます。

これはエンティティマネージャーを初期化する良い方法ですか?私はそうではないと思い始めています-永続性ユニットごとに1つのエンティティマネージャーだけが必要なようですか?この場合のように、作成するリポジトリごとにエンティティマネージャーがあります...永続性ユニットごとにエンティティマネージャーが1つだけであることを確認するにはどうすればよいですか?また、エンティティマネージャとエンティティマネージャのファクトリメソッドにはcloseメソッドがあることに気付きました。これらはいつ呼び出す必要がありますか?サーバー終了イベントで?

JavaSEでのJPAの使用に関する優れた情報源をご存知の場合は、その情報をいただければ幸いです。

ありがとう!

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

entitymanager - Doctrine 2.0 エンティティ内で EntityManager を使用する

Country (id, name) と Mapping (id, object, internalId, externalId) の 2 つのエンティティがあります。Country と Mapping は関連付けで接続されていません (Mapping には国以外の行があるため)。次の条件を使用して、国の外部 ID を取得する必要があります。

  • country.id = mapping.internalId
  • mapping.object = 'country'

そこで、関数 getExternalId() を Country に追加する予定です

質問:

  1. エンティティ内で EntityManager を使用することをお勧めしますか? いいえの場合、私の場合に外部 ID を取得する方法を説明してください。
  2. yaml ファイルを使用して Country と Mapping を関連付けることは可能でしょうか?

前もって感謝します!

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

java - どのくらいの頻度で EntityManager を作成する必要がありますか?

1EntityManagerFactoryつ (または複数) のEntityManagerインスタンスを作成できる があります。私はサーブレット環境を使用しており、サーブレットの存続期間中 (したがって、すべてのユーザーに対して) 共有される (サーブレットコンテキストを介して) サーブレットに接続された 1 つの EntityManagerFactory があります。

次のいずれかを実行できます。

  • サーブレットの存続期間中、単一の EntityManager を作成します (たとえば、すべてのユーザー間で共有)
  • ユーザーごとに 1 つ作成します (したがって、各ユーザーは HttpSession で独自のものを取得します)。
  • HTTP リクエストごとに 1 つ作成します (たとえば、新しいものをインスタンス化し、doGetメソッドの最後で閉じることによって)

どれが最も適切ですか? EntityManager を作成するコストは重要ですか? 単一の共有 EntityManager を実行する場合、単一のトランザクション スコープがありますか (つまり、独立したユーザー間の更新は他の変更をコミットできますか)?

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

java - Spring なしで EntityManager を取得する

私は hibernate を使用していますが、Spring は使用していません。 hibernate-generic-daoが見つかりました。コンセプトはいいようですが、setEntityManager() を呼び出していないため、実行すると NPE が発生します。

Spring を使用せずに EntityManager を取得するにはどうすればよいですか?

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

java - EntityManagerをモックする方法は?

テストサービスレイヤー(私の場合はセッションファサード)を基盤となるレイヤー(私の場合はエンティティマネージャー)から独立させるために、エンティティマネージャーをモックする必要があります。

では、どうすればこれを達成できますか?dbunitを使用する必要がありますか?easy / j(Mock)が必要ですか?

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

java - 一方のentityMangerはエンティティを検出し、もう一方は検出しません

私のプログラムでは非常に奇妙な振る舞いをしています。2つのクラス(クラスLogInとCreateGame)があり、アノテーションを使用してそれぞれにEntityManagerを挿入しました

ある時点で、LogInクラスのメソッドからentitymanger.remove(user)を使用して、データベースから「user」というオブジェクトを削除します。ビジネスロジックでは、ユーザーはゲームを(同時に)ホストして参加できるため、ユーザーが作成したゲームに関するデータベース内のすべてのエントリが削除され、ユーザーが参加したゲームを示すすべてのエントリが削除されます。また。

その後、LogInクラスのメソッドを使用してユーザーが存在するかどうかを確認する別の関数を呼び出します

驚くべきことに、これはユーザーを見つけます。その後、CreateGameクラスのメソッドを呼び出して、もう一度使用してユーザーを見つけようとします。

そのクラスのentitymangerはユーザーを見つけることができません(これは、ユーザーが削除され、データベースにないために期待される結果です)

したがって、問題は次のとおりです。一方のクラスのentitymanagerが、もう一方のクラスがユーザーを見つけられないのに(間違っている)ユーザーを見つけるのはなぜですか?誰かが同じ問題を抱えたことはありますか?

PS:この「バグ」は、ユーザーが別のユーザーが参加しているゲームをホストし(彼をBuserと呼びます)、Buserが現在のユーザーが参加しているゲームを作成した場合に発生します。

この場合、ユーザーを削除すると、game1が削除され、ユーザーがgame2から削除されるため、結果は次のようになります。

PS2:BeanはEJB3.0です。メソッドはデリゲートクラスから呼び出されます。デリゲートクラスのBeanは、InitialContext.lookup()メソッドを使用してインスタンス化されます。ログイン、作成、ゲームへの参加のために、適切なデリゲートクラスがトランザクションを実行するコレスポンデントEJBを呼び出すことに注意してください。logOutの場合、デリゲートはEJBを呼び出してユーザーをログアウトしますが、他の処理を行う必要があるため(上​​記のとおり)、このEJBはremovegame()、removeUserFromGame()などのメソッドを持つ他のEJBを呼び出します(ここでもlookup()を使用)。これらのメソッドが実行された後、ユーザーはログアウトされます。おそらく、最初のエンティティマネージャがデリゲートによって呼び出され、2番目のエンティティマネージャがEJb内から呼び出されるという事実と関係があります。そのため、一方のエンティティマネージャは存在しないユーザーを表示でき、もう一方は表示できません。また、すべてのメソッドにはTRANSACTIONTYPE.REQUIREDがあります

前もって感謝します

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

hibernate - EntityManager + Spring トランザクションに関する質問

コンセプトに疑問があります。いくつかのものを混ぜていると思います。私はDAOレイヤーを備えたアプリケーションを持っており、それらのDAOの実装はSessionFactory(Hibernate)を使用してCRUD操作を実行しています。サービスレイヤーもあり、Spring Declarative Transactionで作業単位を管理しています。すべてがうまく機能しています。 EntityManager を使用するかどうかはわかりませんが、それが行うことは私の作業単位を管理することのようです (私が Spring で行っているのと同じことです)。

EntityManager はいつ使用する必要がありますか? それを使用する利点は何ですか?なぜ私はそれを使用する必要がありますか?

ありがとうございました。