問題タブ [hibernate]

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

java - JBoss 4.2 で JPA を使用して Hibernate の二次キャッシュを有効にする

Java Persistence API (注釈付きエンティティ) を使用する場合、Hibernate の二次キャッシュを有効にするために必要な手順は何ですか? 動作していることを確認するにはどうすればよいですか? JBoss 4.2.2.GA を使用しています。

Hibernate のドキュメントから、次のように、キャッシュを有効にしてpersistence.xmlでキャッシュ プロバイダーを指定する必要があるようです。

他に何が必要ですか?JPA エンティティに@Cacheアノテーションを追加する必要がありますか?

キャッシュが機能しているかどうかを確認するにはどうすればよいですか? Query の実行後にキャッシュ統計にアクセスしようとしましたが、Statistics.getSecondLevelCacheStatisticsは null を返します。おそらく、どの「リージョン」名を使用すればよいかわからないためです。

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

java - HQL ビルダー (Hibernate Query Language) を探しています

JavaでHQLのビルダーを探しています。次のようなものを取り除きたい:

私はむしろ次のようなものが欲しいです:

少しググったのですが、見つかりませんでした。

今のところ自分のニーズに合ったクイック&ダムを書きましたHqlBuilderが、私だけよりも多くのユーザーとテストがあるものを見つけたいと思っています。

注: Criteria API ではできなかった、次のようなことができるようになりたいと思います。

すなわち。プロパティがボーナス テーブルから任意someValueのボーナスを指すすべての株式を選択します。

ありがとう!

0 投票する
8 に答える
102899 参照

java - 休止状態で条件クエリを使用する場合、条件をどのように「OR」しますか?

休止状態の条件クエリを使用して、3 つのフィールドで基本的な「OR」を実行しようとしています。

検索文字列が「名前」、「住所」、または「電話番号」に一致する条件クエリを作成したいと考えています。

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

java - ORM アプローチを完全に独り占めできるのはいつですか?

ORM ツールを導入すると、アーキテクチャがよりクリーンになると思われますが、効率化のために、ORM ツールをバイパスして、JDBC Result Set を反復処理することが時々あります。これは、よりクリーンなアーキテクチャではなく、調整されていないアーティファクトのもつれにつながります。

これは、無効なコンテキストでツールを適用しているためですか、それともそれよりも深いですか?

ORM アプローチを完全に独り占めできるのはいつですか?

どんな洞察も大歓迎です。


背景の少し:

私の環境では、約 50 台のクライアント コンピューターと、かなり強力な SQL Server が 1 台あります。

50 クライアントすべてが常にデータにアクセスしているデスクトップ アプリケーションがあります。

プロジェクトのデータ モデルは、明確性、効率性などのさまざまな理由から、多くの再編成を経てきました。

私のデータモデルの歴史

  1. JDBC が直接呼び出す
  2. Pojo 間の関係のない DAO + POJO (基本的に JDBC をラップ)。
  3. 遅延読み込みを実装する POJO 間の関係を追加しましたが、DAO 間の呼び出しを非表示にするだけです
  4. Hibernate の時流に飛び乗ったのは、Hibernate の時流に飛び乗ったのは、Hibernate がデータ アクセスをいかに「シンプル」にするか (POJO 間の関係が些細なものになった) を見てからでした。
  5. セッションを長期間開いたままにしておくのはデスクトップアプリケーションだったので悪夢だったので、最終的には多くの問題を引き起こしました
  6. Hibernate を使用しながら、DAO カーテンの背後で直接 JDBC 呼び出しを行うことができる、部分的な DAO/Hibernate アプローチに戻りました。
0 投票する
7 に答える
71085 参照

hibernate - オブジェクト全体ではなくオブジェクトの1つの要素のみを返すために休止状態基準を使用する方法は?

たとえば、ボブのリストではなく、オブジェクトボブのIDのリストのみを取得しようとしています。HQL リクエストで問題ありませんが、基準を使用して可能かどうかはわかりますか?

例 :

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

java - Hibernate-EHCacheからTreeCacheへのmaxElementsOnDisk

HibernateアプリケーションのキャッシュをEHCacheからJBossTreeCacheに移行しています。maxElementsOnDiskと同等の構成でディスクのキャッシュサイズを制限する方法を見つけようとしていますが、パッシベーションがアクティブになっているFileCacheLoaderで構成するのと同様のものが見つかりませんでした。

ありがとう

0 投票する
5 に答える
5135 参照

java - プロパティの遅延読み込みと session.get の問題

Hibernate には、JPA マッピングを持つ次のクラスを持つ 2 つのクラスがあります。

データベースからセッション get を使用してクラス Foo からオブジェクトをロードすると、次のようになります。

Foo foo = (Foo)session.get(Foo.class, 1 /* または DB に存在するその他の ID*/); foo の Bar メンバーはプロキシ オブジェクト (この場合は javassist プロキシですが、使用するバイトコード プロバイダによっては cglib の場合もあります) であり、初期化されていません。次に、session.get を使用して、ロードしたばかりの Foo クラスのメンバーである Bar オブジェクトをフェッチすると (同じセッションにいます)、Hibernate は別の DB クエリを発行せず、セッション (第 1 レベル) キャッシュからオブジェクトをフェッチします。 . 問題は、これが初期化されていない Bar クラスへのプロキシであり、このオブジェクト getId() を呼び出そうとすると 0 が返され、getTitle() が null が返されることです。私たちの現在のソリューションはかなり醜く、get から返されたオブジェクトがプロキシかどうかをチェックします。コードは次のとおりです (一般的な DAO 実装から)。

これを行うためのより良い方法はありますか、Hibernate フォーラムで解決策を見つけることができず、Hibernate の JIRA で問題を見つけることができませんでした。

注: foo.getBar() (プロキシを適切に初期化する) だけを使用して Bar クラス オブジェクトを取得することはできません。 class は、フェッチされたばかりの Foo オブジェクトの遅延メンバーでもあります。

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

java - EJB 2.x BMP エンティティー Bean と Hibernate 3.x の混合

EJB 2.x エンティティ Bean (BMP) を使用する大規模なアプリケーションがあります。これは恐ろしい持続戦略であることがよく知られています (必要に応じて詳しく説明します)。

このアプリケーションの移行を開始して、より表現力が高く、透過的で、非侵襲的な永続化戦略を使用したいと考えています。私の会社でのこれまでの経験を考えると、Hibernate 3.x は当然の選択です。

アプリケーション内の 100 以上のテーブルがエンティティ Bean を使用しているため、Hibernate への移行にはしばらく時間がかかります。そのため、可能であれば、理想的には同じテーブルで同時に、2 つの永続化戦略を並行して実行する段階的なアプローチを検討しています。

私の質問は、これら 2 つの永続化戦略を組み合わせることの落とし穴 (もしあれば) は何ですか? 彼らはお互いの邪魔になりますか?

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

java - null値を持つ複合キーのHibernateマッピング

Hibernateを使用して、IDにマッピングしている列の1つがnull値を持つことができる複合IDを作成できますか?

これは、null値を持つことができるが、主キーを持たない一意のキーを持つレガシーテーブルを処理するためのものです。

テーブルに新しい主キー列を追加するだけでよいことに気付きましたが、これを回避する方法があるかどうか疑問に思っています。

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

java - Hibernate (JPA) 熱心なクエリを実行し、すべての子オブジェクトをロードする方法

以前の質問に関連して、データにアクセスする必要がある可能性のある複数のスレッドがあるため、すべての子オブジェクトが確実に読み込まれるようにしたいと考えています (したがって、遅延読み込みの例外を回避します)。これを行う方法は、クエリ (EJB QL) で「fetch」キーワードを使用することだと理解しています。このような:

Orderのセットを持つクラスを持つモデルを想定しOrderLinesています。

私の質問は、「個別の」キーワードが必要なようです。そうしないと、Orderfor eachが返されるようですOrderLine。私は正しいことをしていますか?

おそらくもっと重要なのは、どんなに深くても、すべての子オブジェクトを取得する方法があるかということです。約10〜15のクラスがあり、サーバーにはすべてをロードする必要があります...それは常に熱心で、特にWebフロントエンドがすべてをロードすることを意味するため、使用を避けてFetchType.EAGERいました-しかし、おそらくそれが行く方法です-それはあなたがすること?以前にこれを試してみたところ、ウェブページが非常に遅くなったことを覚えているようですが、おそらくそれは、2 番目のレベルのキャッシュを使用する必要があるということでしょうか?