問題タブ [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.
java - Hibernate/JPA/Toplink をいつ使用するか?
現在、私は非常にシンプルなウェブサイトを作成しています - 約 5 ページです。問題は、ある種のデータベース マッピング ソリューションを統合するのはやり過ぎであり、時間をかける価値があるのか、それとも単純な古い JNDI を使用した方がよいのかということです。データベースから読み取り/書き込みを行う必要があるものがおそらく 10 個ほどあるでしょう。これらのテクノロジーの基本的な理解はあると思いますが、ドキュメントを参照するにはまだ多くの時間が必要です。以前に決定に直面した人はいますか?
編集:申し訳ありませんが、DB接続を検索するためにJNDIを指定し、操作を実行するためにJDBCを指定する必要がありました。
java - Java アプリケーションで時間を管理する最良の方法は何ですか?
だから私は休止状態を使用して、時間を管理するアプリケーションで作業しています。24 時間時計の時刻を処理する最良の方法は何ですか?
このアプリケーションの開始時に TimeZone の問題について心配する必要はありませんが、この機能が最初に組み込まれていることを確認することをお勧めします。
参考までに、休止状態も使用しています
java - Hibernate が短期間のセッション用に設計されているように見えるのはなぜですか?
これは主観的な質問であることは承知していますが、Hibernate が短期間のセッション用に設計されているように見えるのはなぜですか? 通常、私のアプリでは、データ レイヤーを抽象化するために DAO を作成しますが、エンティティ オブジェクトがどのように使用されるか予測できないため、そのコレクションの一部が遅延ロードされるか、セッションが閉じられるとロードに失敗します。
セッションを自動的に再開するように、またはセッションを常に開いたままにするように設計しなかったのはなぜですか?
java - SpringとHibernateを使用して複数のデータベース間で分散トランザクションを行う「最良の」方法は何ですか?
ユーティリティのようなアプリケーションを隅に置き、2 つの異なるデータベースを定期的に更新しています。
これは、Spring Application Context で構築された小さなスタンドアロン アプリです。コンテキストには 2 つの Hibernate セッション ファクトリが構成されており、Spring で構成された Commons DBCP データ ソースを使用しています。
現在、トランザクション管理はありませんが、いくつか追加したいと思います。一方のデータベースの更新は、他方のデータベースの更新が成功するかどうかにかかっています。
アプリは Java EE コンテナー内に存在しません。シェル スクリプトから呼び出される静的ランチャー クラスによってブートストラップされます。ランチャ クラスはアプリケーション コンテキストをインスタンス化し、その Bean の 1 つでメソッドを呼び出します。
データベースの更新にトランザクション性を持たせる「最良の」方法は何ですか?
「最高」の定義はお任せしますが、「設定が簡単」「設定が簡単」「安価」「パッケージ化や再配布が容易」といった機能があればいいと思います。当然FOSSがいいでしょう。
java - MSSQLでのUNIQUE制約の非標準動作によるSpring/Hibernateの回避策
インデックスには、同一の列を持つ複数のレコードを許可しないUNIQUEデータベース制約があります。
Hibernate(v2.1.8)によって管理され、2つのDAO
getHibernateTemplate().save( theObject )
呼び出しを実行するコードがあり、その結果、上記のテーブルに2つのレコードが入力されます。
このコードがトランザクションなしで実行されると、INSERT、UPDATE、次に別のINSERT、および別のUPDATE SQLステートメントが生成され、正常に機能します。どうやら、シーケンスは最初にDB NULLを含むレコードを挿入し、次に適切なデータでそれを更新することです。
このコードが単一のSpringトランザクションにラップされたSpring(v2.0.5)で実行されると、2つのINSERTが発生し、上記のUNIQUE制約のために即時例外が発生します。
この問題は、ANSI SQLとの互換性がないため、MSSQLでのみ発生します。MySQLとOracleで正常に動作します。残念ながら、私たちのソリューションはクロスプラットフォームであり、すべてのデータベースをサポートする必要があります。
このテクノロジーのスタックがある場合、特定の問題に対する好ましい回避策は何ですか?
java - Hibernate のグローバル フィルタリング基準
Session で取得されたすべてのエンティティに適用されるセッション ファクトリ (構成) レベルに単一の基準を追加する方法はありますか? データベースから行を削除するのではなく、削除されたエンティティをそのように「マーク」して、それ以上の操作に参加しないようにする必要があります。
共通のインターフェイス (共通のベース Dao オブジェクトなど) を介してすべてのエンティティを取得できることはわかっていますが、グローバル フィルタリングを使用するアプローチは、この共通のインターフェイスを使用する知識を必要としないため、エラーが発生しにくくなります。
java - Hibernate でデータベース内の文字列の重複を透過的に回避することはできますか?
Hibernate と MySQL を使用して、Eclipse IDE の使用に関する多くのトレース データを保存する Java プログラムがあります。このデータには、メソッド名、ディレクトリ、パースペクティブ名などの多くの文字列が含まれています。
たとえば、イベント オブジェクト (レコードに反映される) は、ソース ファイルと現在のメソッド、ユーザー名などを指定できます。明らかに、文字列データ自体を繰り返すことができます。
メモリ内にある限り、その多くは内部化されるため、繰り返されるすべての文字列インスタンスは同じオブジェクトを指します (私はそれを確認しています)。ただし、@Basic (私は注釈を使用します) を使用すると、Hibernate はそれを VARCHAR(255) にマップします。これは、多くの無駄なスペースを意味します。
自分で SQL をコーディングしていた場合、VARCHAR を手動で管理された文字列ルックアップ テーブルへのインデックスに置き換えて、スペースを節約できたはずです (追加のルックアップを犠牲にして)。
Hibernate にこれを実行させる方法はありますか? スペースのパフォーマンス ヒットを喜んで支払います。
java - Hibernate シーケンス生成のカスタマイズ
アプリですべてのシーケンス番号を生成する休止状態シーケンスが 1 つあります。休止状態 (ターゲット Oracle10) からスキーマを生成すると、次のように生成されます。
シーケンスの構成を変更したいと思います。次のようなものを使用する必要があります。
スクリプトを作成するたびに、生成されたスクリプトを変更するのは好きではありません。hibernate によって生成されたシーケンスはどこでカスタマイズできますか?
hibernate - Hibernate -- メンバー オブジェクトのフィールドに基づいてオブジェクトをロードする
メンバーオブジェクトのフィールド値に基づいて Hibernate 経由でオブジェクトをロードするにはどうすればよいですか? たとえば、次のクラスが存在し、bar と foo の間に 1 対 1 の関係があるとします。
Foo の ID しか持っていない場合、どのように Hibernate Criteria を使用して Bar をロードできますか?
最初に頭に浮かんだのは、Foo オブジェクトをロードして、それを Criterion として設定して Bar オブジェクトをロードすることでしたが、それは無駄に思えます。基準でこれを行う効果的な方法はありますか、またはこれを処理する方法は HQL ですか?
hibernate - Struts 2 + Hibernate 3 を使用してブラウザに画像を提供するにはどうすればよいですか?
Struts 2.1.2 と Hibernate 3.2.6.GA を使用して Web アプリケーションを開発しています。Hibernate を使用して DBUser
のテーブルにマップしたエンティティ があります。USERS
このエンティティに関連付けられた画像が必要です。これをBLOB
DB に保存する予定です。また、の他の属性とともに画像を Web ページに表示したいと考えていますUser
。
私が考えることができる解決策は、列IMAGES(ID, IMAGE)
であるテーブルを持つことでした。テーブルを指すという列があります。次に、long としてこれにマップされたエンティティのプロパティをマップします。JSP を使用してページをレンダリングする場合、画像などを追加し、画像を読み取ってコンテンツをブラウザーにストリーミングするアクションを作成し、ヘッダーを設定して画像を長時間キャッシュします。IMAGE
BLOB
USERS
FK
IMAGEID
IMAGES
User
imageId
IMAGEID
<img src="images.action?id=1"/>
これは機能しますか?DB に格納された画像をレンダリングするためのより良い方法はありますか? そもそもそのような画像をDBに保存するのは正しいアプローチですか?