これはアーキテクチャの問題です。ほとんど変更されないが、多対 1 の関係で使用され、それらのプロパティの値を設定するドロップダウン選択を設定するために使用される約 12 個のコレクションを保持する Spring MVC Web アプリケーションがあります。(例: 国、地域、ステータスの種類など)。
パフォーマンスとメモリ使用の観点から、アプリはこれらのコレクションをどのように利用できるようにする必要がありますか?
現時点では、次のようなシングルトン ラッパー クラスがあります。
@Component("collectionWrapper")
public class CollectionWrapper {
Map<Integer, Country> countries;
Map<Integer, User> users;
Map<Integer, Office> offices;
Map<Integer, Status> statuses
DAOService daoService;
public CollectionWrapper() {}
@Autowired(required=true)
public CollectionWrapper(DAOService daoService) {
this.daoService=daoService;
loadCountriesFromDao();
loadUsersFromDao();
loadOfficesFromDao();
loadStatusesFromDao();
}
public void loadCountriesFromDao() {
countries=daoService.getCountries();
}
// etc...
}
collectionWrapper.loadCountriesFromDao()
コレクションの 1 つのアイテムが変更されるというまれなケースでは、たとえば、変更を行うコントローラーが呼び出します。
最後に、アプリが扱う主なオブジェクトには、次のように、これらの「参照オブジェクト」にマップされるプロパティがあります。
@Entity
public class Event {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="id", nullable = false)
private Integer id;
@ManyToOne
@JoinColumn
private Office office;
etc...
}
したがって、基本的には、これが正しい方法であるかどうか疑問に思っています。コントローラーとビューに collectionWrapper を単純に挿入するのは便利ですが、それが下位レベルでどれほど効率的であるか、または基本的なものが欠けているかどうかはわかりません。
あなたの経験を共有してくれてありがとう!