セッションにはある種のキャッシュが必要なようです。
属性名を知らずにはいられません。ただし、各オブジェクト タイプに特化したメソッドを使用してキャスト部分をスキップすることもできます (理想的には、プリミティブ以外の多くの異なるタイプはありません)。
あなたが Java EE について言及しているので、インターフェイスで定義された次の操作を実装するステートレス Bean を使用します。
String getString(string fieldName);
int getInt(string fieldName);
DateTime getDateTime(fieldName);
...
object getObject(fieldName); // for special scenarios
void setInt(string fieldName, int value);
void setString(String fieldnName, String value);
...
Bean の実装では、柔軟性を高めるために追加します。
前のインターフェースを実装する 2 つのクラスを定義します (bean クラス以外に)。1 つはメモリから値を保存して読み取ることができ、もう 1 つはデータベースからそれを行うことができます。そして、使用したいクラスを選択できる戦略パターンを追加します (ここでも Java EE を使用しているため、これはアプリケーション サーバー変数である可能性があります)。
要約すると:
必要なタイプを公開するインターフェイスを作成します (キャストを避けるため) EJB に上記のインターフェイスを実装します 使用したいさまざまなデータ ストアと同じ数のクラスに上記のインターフェイスを実装します 単純な戦略パターンを実装します (専用クラス、スイッチは必要ありません)適切なクラスを選択します。コードから EJB クライアントを呼び出します。
それが役立つことを願っています