問題タブ [transient]

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

webforms - WindsorCastleIoCスレッドセーフ静的変数

そこにいるIocの達人に質問があります。私は同僚と協力して、CastleWindsorIoCに心を包み込んでいます。asp.NetWebフォーム内の静的ドメインサービスオブジェクトについて意見の相違があります。コンテナを取得するインフラストラクチャ層にBLServiceFactoryという静的ファクトリがあります。

}

このようなコードビハインドでファクトリからインスタンスをプルしています。

私には、これはすべてのセッションに同じインスタンスを提供するように見えます。それは確かに悪いでしょう!私の同僚は、すべてのドメインサービスが一時的とマークされているため、各ページリクエストが新しいインスタンスを取得すると考えています。

ガベージコレクション用にリリースされていない一時的とマークされたオブジェクトによるメモリリークについても少し読みました。これはCastleWindsorの最新リリースで対処されていますか、それともオブジェクトを明示的にリリースする必要がありますか?もちろん、現在のところ、すべてのオブジェクトは静的であり、これは関係ありません。

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

castle-windsor - IoCでの一時的なライフスタイルを持つAutoMapperクラス

AutoMapperを使用してドメインエンティティをマップし、Asp.NetMVCアプリでモデルを表示しています。これらのマッピングクラスをCastleWindsorに登録して、コンストラクターの依存性注入を通じてコン​​トローラーが使用できるようにします。これらのマッピングクラスには仮想CreateMapメソッドがあり、AutoMapperのマッピングをオーバーライドして、エンティティからビューモデルにフィールドをマップする方法、無視するフィールド、データを変換するメソッドを指す方法などを指示できます。これらはすべてうまく機能しています。 ; AutoMapperの背後にいる人々に大きな称賛を!

これまで、ウィンザーでシングルトンライフスタイルにマッピングクラスを登録してきましたが、そのうちの1つは、コンポーネントをTransientとして登録する必要があるRhino.SecurityのIAuthorizationRepositoryを使用する必要があります。これにより、マッピングクラスも一時的なものとして登録する必要があります。これは、一時的なIAuthorizationRepositoryへの参照を保持するシングルトンマッピングクラスが、マッパーを2回使用したときに問題を引き起こすためです(つまり、ISessionはすでに閉じられたエラーです)。

これらすべてのマッピングクラスをトランジェントライフスタイルに登録するのはリソースの無駄ですか?これにより、システムがドメインエンティティをビューモデルにマッピングするたびに、マッピングクラスがインスタンス化され、CreateMapメソッドが実行されます。

または、マッピングクラスをシングルトンとして保持できるように、IAuthorizationRepositoryをマッピングクラスから分離する方法を見つける必要がありますか?

ありがとうダン

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

.net - nhibernate での一時的なインスタンスの重複を避ける

メイン エンティティ (アカウント) グラフは次のようになります。

アカウント

  • マネジャー
  • 営業担当者
  • トレーダー

Manager、SalesPerson、および Trader エンティティは個人型です。メイン エンティティを (内部エンティティと共に) 作成しているときに、まだ存在しない場合は新しい Person を作成する必要があります。これにより、同じ (新しい) 人物がたとえば SalesPerson と Trader に関連付けられることになっている場合、作成された同じ一時的なエンティティを両方に関連付けたいという問題が生じます。しかし、代わりに、システム内に複製を作成する Person オブジェクトの複製一時インスタンスを作成することになります。どうすればこれを回避できますか?

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

spring - Castle Windsor - 一時的なインスタンスのルックアップ メソッド インジェクション

簡単な質問:
Castle Windsor には、XML から構成できる Spring.Net の「ルックアップ メソッド インジェクション」に似た機能があり、クラスが IoC コンテナーを認識することなく、コンテナーから一時的なインスタンスをフェッチする機能を提供しますか?

長い質問:
私は長年の Spring/Spring.Net ユーザーであり、プロジェクトを移植することによって Castle Windsor を試してきました。Spring.Net には「ルックアップ メソッド インジェクション」の概念があり、これは (Spring ドキュメントから)...

ルックアップ メソッド インジェクションは、コンテナが管理するオブジェクトのメソッドをオーバーライドして、コンテナ内の別の名前付きオブジェクトをルックアップした結果を返すコンテナの機能です。通常、ルックアップには、前のセクションで説明したシナリオのように、プロトタイプ オブジェクトが含まれます。Spring フレームワークは、System.Reflection.Emit 名前空間のクラスを使用してメソッドをオーバーライドするサブクラスを動的に生成することにより、このメソッド注入を実装します。

これが意味することは、次の場合...

CreateTransient メソッドをオーバーライドするように Spring に指示し、メソッドが呼び出されるたびに、そのメソッドが (依存関係が初期化された状態で) 新しいコンテナーによって作成された一時インスタンスを返すようにすることができます。これのユニークな部分は、Spring Framework への直接リンクを必要としないことです (たとえば、SomeClass は特定のインターフェースを実装する必要はありません)。

XML経由でこれを達成するためにCastle Windsorに似たようなものはありますか?

(最終的には XML 構成から離れますが、現時点ではそれを実行しようとしています)

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

.net - NHibernateで一時的なエンティティを適切に処理する

別のセッションですでに永続化されているが、セッションが閉じられた後もメモリ内で変更されていないエンティティを参照する適切な方法は何ですか?

NHが単一のセッションでエンティティを永続化し、そのセッションが閉じられたら、他の一時的なエンティティで参照するために、新しいセッションでエンティティを再度フェッチする必要があります。または、新しいセッションインスタンスを呼び出しSession.Lockて、このエンティティが一時的ではないことをNHに通知することもできます。このアイテムは、アプリの存続期間中は変更しないでください。

使用するための好ましい方法は何でしょうか?それを行う他の方法はありますか?

[編集]

追加の問題は、ビジネスレイヤーでNHを直接使用しておらず、リポジトリパターンを使用していることです。これは、Session.Lockへのこの呼び出しを抽象化する方法も必要であることを意味します。つまり、リポジトリインターフェイスにSession.Lockと同様のメソッドがあります。これは少し臭い私見です。

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

nhibernate - NHibernate - 特定のプロパティに「ダーティ」のフラグを立てる

私は NHibernate プロジェクトに取り組んでおり、一時的なエンティティの更新に関して質問があります。

基本的にワークフローは次のとおりです。

  1. DTO (プロジェクション) を作成し、ワイヤ経由でクライアントに送信します。これには、エンティティからのプロパティの小さなサブセットがあります。
  2. クライアントは変更された DTO を返送します
  3. DTO プロパティを適切なエンティティにマップし直して、NH によって UPDATE ステートメントを生成および実行できるようにします。
  4. エンティティを保存する

ポイント4は私が問題を抱えているところです。現在、session.Merge() メソッドを使用してこの更新を行うことができますが、更新する前に最初にデータベースからエンティティをロードする必要があります (2LC がないと仮定します)。そのため、select ステートメントと update ステートメントの両方が起動されます。

私がやりたいのは、エンティティの一時的なインスタンスを作成し、DTO から新しい値をマップしてから、変更したプロパティのみを使用して NH に SQL ステートメントを生成させることです。エンティティ ID と SET 句に必要な値は既にあるので、追加の選択は不要です。これはNHで可能ですか?

現在 session.Update() を使用すると、すべてのプロパティが update ステートメントに含まれ、DTO の一部ではない初期化されていないプロパティが原因で例外が発生します。

基本的に、どのエンティティ プロパティがダーティかを指定して、これらだけが更新に含まれるようにする方法が必要です。

==編集==

例えば...

そしてテストケース。

「UPDATE Persons SET Firstname = 'Bob' WHERE PersonID = 1」のような SQL ステートメントを生成したいと考えていました。代わりに、BirthDate が初期化されていないため、DateTime が範囲外の例外を受け取ります。BirthDate は SQL ステートメントには必要ないため、必要ありません。多分これは不可能ですか?

== /編集 ==

前もって感謝します、ジョン

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

cocoa - コア データ - 計算値を永続属性として保存できますか?

バックグラウンド

  • 計算された値が一時属性に格納されています。
  • アプリが起動するたびに、トランジェントを更新する必要があります。
  • 起動時間が非常に遅い (つまり、10 ~ 15 秒)
  • インスツルメンツは、更新が非常に高価であることを確認しています。

質問

計算された値を永続属性に格納しても問題ありませんか?

Martin Brugger の Dependent Propertiesを使用して、計算された値を最新の状態に保ちます。

詳しくは

私の計算値は、何千ものオブジェクトの期間です。

私が試したこと

  • プリフェッチを使用して、発生する障害の数を最小限に抑えましたが、setReturnsObjectsAsFaults:NO大量のメモリを使用し、まだ時間がかかります。

  • 一時的な更新コードを、私が知っている限り効率的にしました。

  • バックグラウンド スレッドで取得してプログレス バーを使用できることはわかっていますが、ユーザーがまったく待機する必要がないようにしたいと考えています。

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

hibernate - PrimaryKeyJoinColumn の CheckNullability

ObjectX 属性を持つ Entity クラスがあります。

この ObjectX を null にすることはできませんか?

Hibernate 3.4 ではこのオブジェクトを問題なくリポジトリに保存できましたが、Hibernate 3.6 では次の例外がスローされます。

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

java - 時限/一時エントリを含むマップ - メモリは問題ではありません

エントリがタイムアウトし、一定期間後に削除されるマップを作成しようとしています。

基本的に<K, V> Map.put(K key, V value, long **time**)、エントリは即座にマップに配置され、時間(ミリ秒) 後に期限切れになります。今後、削除されたエントリを復元する必要はありませんが、マップに含まれていないことを確認したいと思います。

例:map.put("foo", "bar", 60l * 1000l)このキーと値のペアをマップ内に 1 分間 (60long と 1000long) 存続させます。

試行: ConcurentMap を使用しMap.put(K key, V value, long **time**)て、次のように実装します。
1. 呼び出します。 2.時間(ミリ秒)super.put(key, value)
スリープするスレッドを作成します。
remove(key)

質問: コメントしてください/スレッドセーフ、一貫性、または私の試みの欠陥の点でこれが良い考えかどうか教えてください。これを達成するためのより良い方法があると思われる場合は、アドバイスを提供してください。

編集:返信ありがとうございます。ここではメモリは問題ではありません。エントリの寿命が短いことだけを気にしています。ありがとうございました。

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

java - Java: 静的一時フィールド

Java で「static transient」フィールドを宣言できることがわかりました。コンパイラは文句を言いません。私たち全員が知っているように、静的フィールドはシリアル化されていないため、これはまったく役に立たないようです。

しかし、「静的トランジェント」フィールドが役立つケースは実際にあるのでしょうか?