問題タブ [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.
java - JPA/hibernate EntityManager と EJB3.0 を使用してジェネリックを実装する方法は?
ビジネス ロジックを保持する slsb があります。ジェネリックを使用して、次の 3 つのメソッドを 1 つのジェネリック メソッドに変更するにはどうすればよいですか? 最初の 2 つは同じデータベースで、3 番目は別のデータベースです。また、トランザクションに関連してメソッドにさらに注釈が必要ですか?
よろしくお願いします。乾杯!
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に強制的に書き込まないようにする必要がありますか? (これはバグでしょうか?)。
ご回答ありがとうございます。
ピエール
orm - EntityManager (JPA) L1 または L2 キャッシュ サイズに制限を設定する方法
L1 または L2 キャッシュのサイズ制限を設定する方法。キャッシュサイズを増やすことを懸念しています。1 つの方法は、キャッシュのタイムアウトを定義することですが、キャッシュ サイズの制約を作成できるかどうかを知りたいですか?
RGDSナビ
java - JPA2-JavaSEでのEntityManagerの使用-いくつかの質問
JavaSE環境でのエンティティマネージャの使用に関していくつか質問があります。
リポジトリパターンを使用して、データベースでCRUD操作を実行しています。次のような基本リポジトリクラスがあります。
次に、リポジトリを継承するEmployeeRepositoryのようなクラスがあります。これらのリポジトリクラスは、私のサービスレイヤーに作成されます。
これはエンティティマネージャーを初期化する良い方法ですか?私はそうではないと思い始めています-永続性ユニットごとに1つのエンティティマネージャーだけが必要なようですか?この場合のように、作成するリポジトリごとにエンティティマネージャーがあります...永続性ユニットごとにエンティティマネージャーが1つだけであることを確認するにはどうすればよいですか?また、エンティティマネージャとエンティティマネージャのファクトリメソッドにはcloseメソッドがあることに気付きました。これらはいつ呼び出す必要がありますか?サーバー終了イベントで?
JavaSEでのJPAの使用に関する優れた情報源をご存知の場合は、その情報をいただければ幸いです。
ありがとう!
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 に追加する予定です
質問:
- エンティティ内で EntityManager を使用することをお勧めしますか? いいえの場合、私の場合に外部 ID を取得する方法を説明してください。
- yaml ファイルを使用して Country と Mapping を関連付けることは可能でしょうか?
前もって感謝します!
java - どのくらいの頻度で EntityManager を作成する必要がありますか?
1EntityManagerFactory
つ (または複数) のEntityManager
インスタンスを作成できる があります。私はサーブレット環境を使用しており、サーブレットの存続期間中 (したがって、すべてのユーザーに対して) 共有される (サーブレットコンテキストを介して) サーブレットに接続された 1 つの EntityManagerFactory があります。
次のいずれかを実行できます。
- サーブレットの存続期間中、単一の EntityManager を作成します (たとえば、すべてのユーザー間で共有)
- ユーザーごとに 1 つ作成します (したがって、各ユーザーは HttpSession で独自のものを取得します)。
- HTTP リクエストごとに 1 つ作成します (たとえば、新しいものをインスタンス化し、
doGet
メソッドの最後で閉じることによって)
どれが最も適切ですか? EntityManager を作成するコストは重要ですか? 単一の共有 EntityManager を実行する場合、単一のトランザクション スコープがありますか (つまり、独立したユーザー間の更新は他の変更をコミットできますか)?
java - Spring なしで EntityManager を取得する
私は hibernate を使用していますが、Spring は使用していません。 hibernate-generic-daoが見つかりました。コンセプトはいいようですが、setEntityManager() を呼び出していないため、実行すると NPE が発生します。
Spring を使用せずに EntityManager を取得するにはどうすればよいですか?
java - EntityManagerをモックする方法は?
テストサービスレイヤー(私の場合はセッションファサード)を基盤となるレイヤー(私の場合はエンティティマネージャー)から独立させるために、エンティティマネージャーをモックする必要があります。
では、どうすればこれを達成できますか?dbunitを使用する必要がありますか?easy / j(Mock)が必要ですか?
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があります
前もって感謝します
hibernate - EntityManager + Spring トランザクションに関する質問
コンセプトに疑問があります。いくつかのものを混ぜていると思います。私はDAOレイヤーを備えたアプリケーションを持っており、それらのDAOの実装はSessionFactory(Hibernate)を使用してCRUD操作を実行しています。サービスレイヤーもあり、Spring Declarative Transactionで作業単位を管理しています。すべてがうまく機能しています。 EntityManager を使用するかどうかはわかりませんが、それが行うことは私の作業単位を管理することのようです (私が Spring で行っているのと同じことです)。
EntityManager はいつ使用する必要がありますか? それを使用する利点は何ですか?なぜ私はそれを使用する必要がありますか?
ありがとうございました。