問題タブ [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.

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

java - HibernateQuery 結果リストを Object クラスにキャストできません

次のクエリを使用して、休止状態でデータベースからデータを取得しています

しかし、これは例外を返しています

私もこの方法を試しましたが、何をしているのかわかりません

繰り返しますが、同じ例外が発生しています。どうすれば休止状態でこれを行うことができますか?

ありがとう

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

java - Hibernate 4 SessionFactory スコープのインターセプター

私の Java アプリケーションは、データベースに格納する前にデータを変更するために、SessionFactory スコープのインターセプターで Hibernate を使用します。

hibernate のリリース 4.0 では、クラス Configuration を使用する概念が変更されました。

したがって、私の新しいアプローチは次のとおりです。

この新しいアプローチでインターセプターを設定するポイントが見つかりませんでした。SessionFactory スコープのインターセプターを設定する方法に関する推奨事項はありますか?

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

hibernate - Hibernate、SessionFactoryObjectFactory および OutOfMemoryError:Java ヒープ領域

私が働いている場所では、アプリケーションの 1 つで JVM のヒープ領域が不足するという問題が発生しています。プロファイラーでヒープダンプを調べるなど、この原因をいくつか検索しましたが、今はほとんど行き詰まっています。

まず、問題のシステムについて少し説明します。これは、Spring と Hibernate を使用して組織に関する記録を保持する Java アプリケーションです。このシステムは、このタイプのデータを担当する政府機関から組織に関するデータを取得するために使用される Web サービス クライアントのセットで構成されています。さらに、システムはそのようなデータを含むローカル データベースを保持し、Web サービス呼び出しのキャッシュとして機能するため、組織に関する情報が初めて要求されたときにローカルのリレーショナル データベースに保存され、これが検索に使用されます。次のリクエストのデータの。Hibernate は、このデータベースとの通信に使用されます。

前に示したように、問題は、しばらくすると、アプリケーションが OutOfMemoryError: java heap space でクラッシュし始めることです。Eclipse+MAT を使用してヒープ ダンプを調べたところ、犯人は Hibernate のものSessionFactoryObjectFactoryであり、割り当てられたメモリの約 85% を占めていることがわかりました (すべてメモリが保持されています)。この中に保持されているオブジェクトの種類を正確に特定するのは少し難しいことがわかりました。最上位には Glassfish がありWebappClassLoader、これにはorg.hibernate.impl.SessionFactoryObjectFactory. これにはorg.hibernate.util.FastHashMapが含まれており、これには が含まれていjava.util.HashMapます。これには多数のエントリが含まれており、それぞれに HashMap エントリ、a、org.hibernate.impl.SessionFactoryImplおよび String が含まれています。HashMap エントリには、同じ 3 つのオブジェクト、HashMap エントリ、SessionFactoryImplおよび文字列であり、この構造は何度も繰り返されます。s には、多数のオブジェクトが含まれています。SessionFactoryImpl特にorg.hibernate.persister.entity.SingleTableEntityPersister、多数の String と HashMap が含まれています。一部の文字列はドメイン オブジェクトの変数を参照し、一部は sql ステートメントを含みます。

一見すると、このオブジェクトが不必要な量のメモリを占有しているように見えた (ダンプ ファイルは 800MB で、そのうち 650MB は によって占められていたSessionFactoryObjectFactory)。そのため、オブジェクトのロードとアンロードのログを有効にし、システムにデータを要求しようとした。組織 (別のシステムからの Web サービス呼び出しを介して)。ここで気付いたのは、オブジェクトのロードに関するメッセージがたくさんあるのに、アンロードされたオブジェクトに関するメッセージがほとんどないことです (ライブラリ オブジェクトのアンロードだけがありました)。これにより、オブジェクト (組織など) がメモリにロードされると、アンロードされることはありません。つまり、時間が経つにつれて、システムはメモリを使い果たします。(これは、ログで見つかった内容に基づく公正な仮定ですか?)

そして、その原因を突き止めようとしましたが、これは非常に困難でした。Hibernate によってロードされたオブジェクトはセッションが存続する限り存続するため、Spring の への呼び出しを に置き換えることで、セッションの処理方法を変更しようとしHibernateDaoSupport#getSession()ましたHibernateDaoSupport#getSessionFactory().getCurrentSession()。これによる問題への明らかな影響はありませんでした。また、問題の Dao メソッドのいくつかの finally ブロックに ... への呼び出しを追加しようとしましたが、見た目にも影響はありませんでしgetCurrentSession().flush()た。.clear()(Dao メソッドはすべて で注釈が付けられています@Transactional。これは、セッションがメソッド内でのみ有効であることを意味し@Transactional、メソッドへの連続した呼び出しはgetCurrentSession()(?) を呼び出すときに異なるセッションを取得する必要があることを意味します)

そのため、チェックする他の領域を考え出すことになると、今はほとんど行き詰まっています. どこを見て、何を探すべきかについて、誰かがアイデアや指針を持っていますか?

ヒープダンプは のインスタンスがたくさんあることを示しましたorg.hibernate.impl.SessionFactoryImpl。これは予想どおりですか? (私は、SessionFactory のインスタンスが 1 つだけ、またはいくつかのトップがあるべきだと考えていたでしょう。)

編集:

私は実際に問題を解決できたと思います:

他のオブジェクトへの依存関係が webservice-class で処理される方法が問題であることが判明しました。ClassPathXmlApplicationContext(...)これは、webservice クラスのコンストラクターでnew を呼び出すことで解決されました。これにより、リクエストごとに (または少なくともセッションごとに) 多くのオブジェクトがロードされ、再度アンロードされることはありませんでした (主に Hibernate のSessionFactoryImpl. 代わりに依存関係を注入するように webservice-classes を変更し、これまでにプロファイラーを使用して見たものを形成すると、複数のSessionFactoryImpl-objects の問題が解決されました。

GlassFish 2.x から GlassFish 3.x にアップグレードすることで問題が悪化した可能性があると思います。これは、webservice-class のインスタンス化方法に関するいくつかの違いである可能性があります。

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

hibernate - session.save() が更新クエリを発生させるのはなぜですか?

これは、2 つのテーブルに挿入するコードです。しかし、「バッチ更新が更新から予期しない行数を返しました[0];実際の行数:0;予想:1」というエラーが表示されます

実行すると、ログの目的でこれが提供されます。

更新しようとしている間に、もう一度挿入クエリを作成したい。私が間違っているところを助けてください。

0 投票する
0 に答える
503 参照

java - 新しい Hibernate セッション ファクトリを作成するときの TreeCache の問題

jboss-cache 3.2.5 で Hibernate 3.1.13 を使用しています

第 2 レベルのキャッシュを有効にしてアプリケーションを実行しており、アプリケーションの途中で (ユーザー操作に基づいて) 既存のセッション ファクトリ (sessionFactory.close();) を閉じて、新しいものを作成しています。

この時点まで、私の第 2 レベルのキャッシュは正常に動作し、新しいセッション ファクトリを閉じて作成した後、Treecache から次のエラーが発生します。

エラー

私のtreecache構成ファイル

================================

私のHibernate構成ファイル

この問題について人々が助けてくれてありがとう

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

mysql - Spring 3.1.0、Hibernate 4.0.1.Final、およびMySQL 5.1にはどのプールされたデータソースを使用する必要がありますか?

Spring 3.1.0.RELEASE、Hibernate 4.0.1.Final、およびMySQL5.1を使用しています。使用する必要があるプールされたデータソースは何ですか?私は現在使用しています(アプリケーションコンテキストファイルからのスニペット)...

ただし、これはプールされたデータソースではなく、呼び出しごとにJDBC接続を作成します。以前はこのHibernate構成(hibernate.cfg.xml)を持っていました...

しかし、Spring 3.1.0のバグのため、セッションファクトリBeanを構成するときにhibernate.cfg.xmlファイルを使用できません(これは、Springアプリケーションコンテキストファイルからのスニペットです...)

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

nhibernate - asp.net のベスト Nhibernate セッション

私は nHibernate が初めてで、専門家の助けが必要です。ライフサイクルの長いasp/net Webアプリケーションのnhibernateセッションを作成したいのですが、クライアントがセッションを長時間開いているなどの間違いを犯したくないため、最善の解決策は何ですか。助言がありますか?ステートレス セッションでいくつかのオプションを見ましたが、通常のセッションを使用するタイミングとステートレスを使用するタイミングがわかりません。

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

nhibernate - セッション構築に関するアドバイス

私は nhibernate の経験があまりなく、プロジェクトに最適なセッション ソリューションを選択する必要があるため、大きな問題が発生しました。セッションの使用例を次に示します。

-セッションが開き、グリッドビューを埋めるクエリを作成します -
塗りつぶされたグリッドビューをダブルクリックし、編集オプションを使用して別のページにリダイレクトされます -
彼はグリッドビューから持っていたオブジェクトを編集します -彼はオブジェクトを
保存してグリッドビューに戻ります -グリッド
ビューは保存されたオブジェクトを表示しています
-彼は別のものを編集します....

では、私にとって最適なセッションとは何か、またいつ新しいセッションを開始/終了するべきかを教えてください。

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

spring - 春と休止状態:現在のスレッドのセッションが見つかりません

次のエラーが表示されます

サービスクラス

DAOクラスのビット

そして私はこれを私のapplication-context.xmlに持っています

次のエラーが発生する理由を誰でも見つけることができますか?

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

spring - sessionFactory を取得できません

spring と hibernate を使用する私の Java プロジェクトは、sessionFactory を取得できません。使用するときは常に null です。構成:

Test.java のメイン コードは