問題タブ [optimistic-locking]

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 投票する
1 に答える
509 参照

sql-server-2008 - データベース内のクライアントごとのテーブル

私たちは、クライアントユーザーごとに予約できるサービスを開発しています。戦略はありますか - 各クライアントのデータベース (MS SQL SERVER) のテーブルは適切ですか?

このような戦略は、複雑なテーブル ロックを簡素化し、排除すると考えています。

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

hibernate - 休止状態で「最大の価値が勝つ」ロジック

データベースにhigh_scoresテーブルがあり、2つの値があります。

新しいハイスコアを保存するリポジトリメソッドが必要です。非常に単純なもののために、楽観的なロック再試行ロジックでコードを汚したくありません。私が実行したいのは基本的にこの行です:

これでほとんどの場合、私の目標は問題なく達成されますが、ユーザーがハイスコアを持っていない場合は、ハイスコアを作成することについても心配する必要があります。高いスコアを低いスコアで上書きしないようにする必要がありますが、このテーブルに必要なロックはそれだけです。

hibernateにこのようなことをするように依頼する方法はありますか、それともカスタムSQLに頼る必要がありますか?

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

ruby-on-rails - オブジェクトの楽観的ロックを使用してその関連付けを保護できますか?

Rails アプリで競合状態の問題が発生しています。説明する前に、少し(簡略化された)コードを次に示します。

何が起こっているかcreate_or_update_sending_messageというと、2 つのプロセスから呼び出されています。どちらもメッセージ コレクションを空と見なすため、どちらも新しいメッセージを作成します。次に、3 番目のプロセスが質問を読み込み、変更し、保存しようとすると、実際の問題が発生した場所ではない場所にエラーがスローされます。

ゼロから設計している場合、これを回避するいくつかの方法を考えることができますが、残念ながらcreate_or_update_sending_messageレガシー コードが深すぎて実用的ではありません。

質問モデルに対して楽観的ロックを有効にしました。質問が保存されていないため、役に立ちません。メッセージのみが保存されます。

メッセージの作成の保存を防ぐために、質問に対して楽観的ロックを使用する方法はありますか? だから、それは次のようになります

それはデータベースの観点からも理にかなっていますか?

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

hibernate - @Version 列を使用すると、@ManyToOne 関係プロパティを参照として使用できません

休止状態の 3.6.3.Final を使用しています。次のように定義された一方向の ManyToOne を持つ 2 つのリレーショナル エンティティ A と B があります。

ここで、すでに pk id = 1 で db に永続的な B インスタンスがあり、次の操作を行っているとします。

有名な「TransientObjectException: object references an unsaved transient...」例外をスローします。驚くべきことに、@Version @Column を削除するか @Transient にすると、上記のコードは問題なく動作します。なぜ私がこの行動を観察しているのか分かりますか?

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

hibernate - 楽観的ロック (Hibernate) を明示的に除外するのはいつですか?

Hibernate を介して @OneToMany 関係から楽観的ロックを明示的に除外するのは、どのような状況で適切でしょうか?

私は Hibernate に関する投稿を読んでいますが、これは基本的に、子エンティティを更新すると親エンティティに楽観的ロックが発生することを示していますが、これは通常は不要です。ここでのキーワードは通常、次のとおりです...このような関係で楽観的ロックが必要な場合と必要でない場合をより正確に説明できる人はいますか?

オプティミスティック ロックの除外を示すコード例を次に示します。

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

nhibernate - 楽観的ロックを使用しているときにスローされない ISession.Merge() の代替手段はありますか?

ISession.Merge() を使用して 2 つのセッション間の一貫性を維持しようとしましたが、マージされたインスタンスの Version プロパティがセッションで読み込まれたものよりも高い場合 (StaleObjectStateException を使用)、失敗します。

バージョン フィールドが一致しない場合に機能する代替方法はありますか?

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

java - 休止状態で楽観的ロックを行う方法

私は Hibernate と Spring がまったく初めてで、Spring、Hibernate、Maven などを学ぼうとして、3 つすべてを使用して hello world の例を実行する方法しか知りません。私の基本的な理解により、楽観的ロックを実行するタスクが割り当てられました。私がグーグルで調べた限り、私が必要とするのは、xmlにバージョンタグを追加し、マップされたクラスに整数変数バージョンを追加するだけで、それほど難しくないことがわかります..このように...

私のxmlは次のようになります

また、2 番目のユーザーが保存すると、hibernate は自動的にバージョン管理を行います。hibernate は、このユーザーが古いデータで作業していることを検出し、StaleObjectException をスローします。

私の理解を確認したかっただけです。事前に感謝します。

これについて、誰かが Hello World の例を教えてくれると本当に助かります。

また、「最後のコミットが勝つ」シナリオを実装しようとしていることにも言及したいと思います

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

hibernate - Hibernate オプティミスティック ロック バージョン オーバーフロー

私は休止状態を使用しており、休止状態のロックのためにバージョン列が提供されています。int問題は、バージョン列がJava の制限に達するほど頻繁にアプリがエントリを更新することです。intMySQL の限界に達している可能性もあります。

バージョンが制限 (Java または MySQL) に達したら、バージョンをゼロに戻す方法はありますか?

確かに、データ型を長くすることができます。しかし、それは避けられないことを遅らせているだけです。

編集:グーグルで検索して、この注釈を見つけました:@OptimisticLock(excluded = true)。リンク: http://bit.ly/nczCx1理論的には動作するようですが、うまく使用できていません。この注釈を適切に使用する方法を知っている人はいますか?

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

hibernate - Hibernate OptimisticLocking が機能しない

追加後、Sping 3.0.4でHibernate 3.6.6を使用しています

私のBeanに、次のテストケースを実行しています

Hibernate update ステートメントに適切な WHERE 句を追加しないでください

ただし、Spring なしで Hibernate のみを使用している他のアプリケーションでは、同じ設定で問題なく動作しています。

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

hibernate - Hibernate: hashcode() および equals() メソッドに「バージョン」フィールドを含める必要があります

hashcode()永続エンティティをオーバーライドするときequals()は、ID を含めず、オブジェクトを一意に識別する意味のあるプロパティのみを含める必要があることを知っています。しかし、Hibernate による楽観的同時実行制御versionに使用されるフィールドはどうでしょうか? IDと同じように、スキップする必要がありますか?とにかくHibernate OCCを混乱させませんか?new User(name='John', version=1).equals(new User(name='John',version=2))