問題タブ [sessionfactory]
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.
hibernate - Spring + Hibernate + JPA: 実行時に EntityManagerFactory をリロードする方法
私はこの数時間これを探していました。おそらくあなたの何人かが私を助けることができます.
春の実行時に EntityManagerFactory (または SessionFactory) でマッピング情報をリロードしようとしています
EntityManagerFactory は次のように定義されます。
私のpersistence.xmlでは、マッピングファイルがあるjarを定義するだけです
休止状態のマッピング ファイルは頻繁に変更され、アプリはこのファイルを使用して UI の一部を生成しています。したがって、休止状態のマッピングを変更するたびにサーバーを再起動したくありません。
私が考えたことの1つは、EntityManagerFacotries/SessionFactoryを次のような新しいものに置き換えることです
でも副作用はわからない
もう 1 つの方法は、実行時にプログラムで EntityManagerFactory/SessionFactory マッピングを変更 (追加/削除) することです。
JPA:プログラムでEntityManagerFactoryにエンティティを追加する
JPA 2.0でエンティティクラスをプログラムでロードする?
解決策が見つからない非常に洗練されたシナリオ
別のスレッドで動的JPAについて言及されています
異なる JAR から永続性ユニットをマージ/拡張するにはどうすればよいですか?
JPA 2.0: エンティティークラスを PersistenceUnit に *別の jar から * 自動的に追加する
私はすでに春からアプリケーションコンテキスト全体を更新しようとしました
しかし、このプロジェクトはもうサポートされていないようです...
java - リードレプリカとプライマリ DB の複数のセッション ファクトリを管理する
私たちのアプリケーションには、2 つのデータベースがあり、1 つはプライマリ、もう 1 つはレポート目的でのみ使用されるリードレプリカです。
アプリケーションの一部はプライマリ DB に対して読み取り/書き込みを行いますが、アプリケーションのレポート機能はパフォーマンス上の理由から読み取り専用の読み取り/レプリカです。
両方の目的で CRUD 操作を公開する DAO をどのように設計すればよいでしょうか? 2 つのセッション ファクトリを作成し、DAO クラスで維持する必要がありますか?
ご意見ください。
wcf - NHibernateとWCF:パフォーマンス(セッションの再利用)と同時実行性(同時リクエスト)
基本的に変更できない、同じ構造のレガシーデータベースの群れへのさまざまな統合に取り組んでいます。このために、メタ情報、ルーティングルールなどを保持し、レガシーデータベースのデータを一時的に保持するための補助データベースを追加しました。
私たちは主にNHibernateを使用してデータベースに接続しています。1つのアプリケーションはWCFサービスであり、受信データを実際に幅の広い(数十の列)ネストされたテーブルに挿入する必要があります。明らかに、パフォーマンスが問題であるため、NHibernateのトランザクションで可能な限り経済的になることを目指しています。同時に、並行性が問題であるように見えました。本番環境では、ゾンビ化されたトランザクションエラー(デッドロック)が発生し始めていました。
私はこれら2つの問題に対処するためにバランスをとっていますが、並行性の問題を実際に排除していません。
サービスの動作は、次のように、一度に1つのリクエストを処理するように設定されています。
以前、インターネットからの「インスピレーション」(読み取り:コピー/貼り付け)の後、補助データベースとレガシーデータベースにそれぞれXxxNHibernateUtilのようなクラスのセットを追加することになりました。これらのクラスはNHibernateセッションを制御し、事前に初期化されたSessionFactoriesからセッションを生成または再利用します。
補助データベースの場合、次のようになります。
トランザクションにセッションが必要な場合は常に、現在のセッションが検索され、サービス要求の呼び出し中に再利用されます。または少なくとも:それが起こっていると思われることです。
編集:セッションコンテキストはもちろん、次のようにhibernate.cfg.xmlで設定されます。
レガシーデータベースの場合、NHibernateUtilはさまざまな可能なデータベースを処理するように適合されています。このため、各接続は独自のSessionFactoryを構築し、Dictionaryコレクションで検索する必要があります。それ以外の点では、原則は同じです。
WCFStormを使用したテストでは、一度に1つのリクエストを送信する場合は問題なく機能しているようですが、負荷テストを開始するとすぐに、エージェントが1つだけで間隔が長い場合でも、同時リクエストを指すさまざまな種類の例外が多数発生します。お互いを妨害するトランザクション。IsolationLevelを微調整してみましたが、今は役に立ちます。
同じデータベースへの異なるトランザクションが整然と処理され、相互に干渉しないように、セッションを異なる方法で生成および処理する必要があると思います。ただし、これを機能させる方法についての洞察が不足しています。どんな助けでも大歓迎です!
編集1つのサービスメソッドで、複数のエージェントを使用してテストする場合、最初の12程度の呼び出しが正常に機能し、その後、補助データベースにのみ関係する次の一連の例外が表示され始めます。
- 「IDataReaderをNDataReaderに変換する際に問題が発生しました」/「リーダーが閉じているときにMetaDataを呼び出そうとして無効になりました。」
- 「コレクションの読み込みへの不正アクセス」
- 「SQL例外で開始に失敗しました」/「タイムアウトが期限切れになりました。操作が完了する前にタイムアウト期間が経過したか、サーバーが応答していません。」
- 「クエリを実行できませんでした」/「ExecuteReaderには、開いていて使用可能な接続が必要です。接続の現在の状態は閉じています。」
- 「コレクションを初期化できませんでした:」/「タイムアウトが期限切れになりました。操作が完了する前にタイムアウト期間が経過したか、サーバーが応答していません。」
- 「トランザクションが正常に開始されませんでした」
- 「トランザクションは現在の接続に関連付けられていないか、完了しています。」
- 「コレクションを初期化できませんでした:」/「リーダーが閉じているときにReadを呼び出そうとしても無効です。」
少なくとも例外1は、同じセッションが複数のスレッドによってアクセスされていることを示しています(おそらく呼び出し)。また、他のものは、現在のセッションが他のプロセスによって中断されていることを示しています。しかし、呼び出しを分離してキューに入れようとしたときに、これはどのようになりますか?
別のサービス方法の場合、これらの問題は補助データベースでは発生しませんが、しばらくすると、レガシーデータベースへのトランザクションでZombiedTransaction例外(デッドロック)が発生し始めます。それでも...何が得られますか?
java - Session ファクトリの 2 つのインスタンスを使用中に BeanCreationException が発生する
2 つのトランザクション マネージャー (1 つは READ 要求用、もう 1 つは READ-WRITE 要求用) と 2 つのセッション ファクトリを作成しました。
重要なスニペットは次のとおりです。
次のようなDAO用のBeanを作成しようとしている瞬間:
BeanCreationException
次のエラー メッセージが表示されます。
org.springframework.beans.factory.BeanCreationException: 'configurationDAO' という名前の Bean の作成中にエラーが発生しました: 自動配線された依存関係の注入に失敗しました。ネストされた例外は org.springframework.beans.factory.BeanCreationException: Could not autowire field: public org.hibernate.SessionFactory com.amazon.im.dao.hibernate.GenericDAOImpl.sessionFactory; です。ネストされた例外は org.springframework.beans.factory.NoSuchBeanDefinitionException: タイプ [org.hibernate.SessionFactory] の一意の Bean が定義されていません: 単一の一致する Bean が予想されますが、2 が見つかりました: [SessionFactory, SessionFactory1]
LocalSessionFactoryBean
「annotatedClasses」プロパティを使いたいので使えません。
なぜそれが起こっているのかについての指針はありますか?私の側に欠けているものはありますか?
java - 複数のトランザクションマネージャーを使用している間、スレッドにバインドされた Hibernate セッションはありません
2 つのトランザクション マネージャー (1 つは READ 要求用、もう 1 つは READ-WRITE 要求用) と 2 つのセッション ファクトリを作成しました。
重要なスニペットは次のとおりです。
次の例外が発生しています:
DAO を呼び出すメソッドは次のとおりです。
誰かが私が間違っている部分を指摘できますか?
java - Hibernate のオープニング/クロージング セッション、DAO の正しいアプローチ
私はこの Hibernate オブジェクト DAO を作成しましたが、このアプローチでは、セッションごとの更新アプローチを使用しています (これは正しくないと思います)。
遅延フェッチされるコレクションを含む User クラスで問題が発生しているため、私が正しいとは思わない理由。DAO から各ユーザーを取得するとき、セッションは閉じられます。したがって、コレクションを取得できません。
また、オブジェクトが切り離されているため、テーブルに対して不必要な更新が行われることもあります。
getCurrentSession()を使用するなど、DAO を修正する方法はありますか?
HibernateUtil
hibernate - Spring 3 統合テスト - sessionFactory の初期化例外
春のjunitテストを実行すると、次のエラーメッセージが表示されました:
....
そのエラーメッセージの理由を見つけるのを手伝ってもらえますか? slf4j の依存関係に問題があるようですが、プロジェクトには問題があります。
テストクラス:
春のテスト コンテキスト構成:
DEPENDENCIES (POM.XML からのバージョン) :
hibernate - JBoss Hibernate が SessionFactory および JNDI と競合する
JBoss AplicationServer で ICEFaces と Hibernate を使用してプロジェクトを開始していますが、Hibernate を動作させるのに行き詰まっています。
問題は、DAO クラスが SassionFacade を取得できないことです。JNDIとの同じ競合のため、Hibernateは作成していないと思います
私がこれまでにやったこと:
MySQL でデータベースをセットアップします。私はこのチュートリアルを使用しました: https://community.jboss.org/wiki/DataSourceConfigurationInAS7
(モデルとして JDBC ドライバーをインストールしました) サーバーの起動時に他のドライバーをロードしているように見えるため、機能するかどうかはわかりません
私はこのチュートリアルの最初の面をかなり使用しました:
http://www.packtpub.com/article/developing-applications-with-jboss-and-hibernate-1
そしてそれはうまくいったようです、私は私のデータベースとテーブルですが、フラグ セッション ファクトリが空で、次の警告が表示されます。
同じ時点で同じセッション ファクトリがあったことを覚えています。ボットは、私が何を変更したかを覚えていません。
これは単なる警告であるため、チュートリアルを進めてテーブルと DAO にクラスを正常に生成しましたが、小さなテスト プログラムを作成して DAO の 1 つを使用し、次のエラーが発生しました。
これはサーバーのstandalone.xmlです
私の休止状態の設定 (hibernate.cfg.xml)
Hibernate から生成された DAO (PlattenHome.java)
そしてそれをどのように使用するか:
サーバーの起動後に休止状態の構成を再構築すると、別の警告が表示されることに気付きました
nhibernate - SessionContext を使用する複数のデータベースを持つ NHibernate Webapp
Web アプリケーションでは、流暢な構成で NHibernate を使用します。
単一の構成データベースと、顧客データを保持する多数の異なるデータベースがあります。
データベースごとに、最初に使用するときに流暢な構成と SessionFactory を作成します。
OpenSession メソッドを呼び出してセッションを取得し、処理が終わったら破棄します。
ただし、読み取ろうとすると、ADO データ リーダーがまだアクティブであるというエラー メッセージが表示されることがあります。NHibernate が同じ接続を (再) 使用しようとしていることを示しています。
データベース要求が接続によってアトミックに処理されるようにするにはどうすればよいでしょうか。(他のリクエストによる再利用不可)
SessionFactory を再作成するとうまくいくかもしれませんが、それは高価なようです
nhibernate - Hibernate カスケード SaveUpdate
エンティティに saveupdate をカスケードして関連付けを保存する際に問題があります。このマッピングのオーバーライドがあり、カスケードによって 1 対多の関連付けを保存したいのですが、うまくいきません。
オブジェクト自体は保存されますが、関連付けは保存されません。何が間違っていますか?