だから私はORM/Hibernateからお互いを参照するオブジェクトのチェーンを持っています
- 大陸
- 多くの国がある
- 多くの州がある
- 多くの都市がある
- 都市部が多い
- 国
- 1つの国を持っています
- 多くの州がある
- 多くの都市がある
- 都市部が多い
- 州
- 大陸が1つある
- 1つの国を持っています
- 多くの都市がある
- 都市部が多い
- 街
- 大陸が1つある
- 1つの国を持っています
- 1 つの状態を持つ
- 都市部が多い
- 都市部
- 大陸が1つある
- 1つの国を持っています
- 1 つの状態を持つ
- 都市が 1 つある
一部のメソッドでは、キーを識別するために簡単な検索を実行できる必要があります。
そのため、私は現在、実行スレッドの存続期間中に無数のデータベースクエリを起動することなく、メモリ内のオブジェクトの ID をすばやく検索できるように、多くのオブジェクトをすべて持っています。
HashMap<Integer,Country> countriesTable
HashMap<Integer,State> statesTable
HashMap<Integer,City> citiesTable
HashMap<Integer,CityPart> citypartsTable
しかし、私が心配しているのは、循環参照が保持されており、オブジェクトがガベージ コレクションによってクリアされないことです。オブジェクトはすべて ORM リレーションを介して相互に参照し、それぞれにプライベート マップが存在するためです。
WeakHashMap について読んだところ、強い参照がなくなると参照がクリアされます。
問題は、私の状況で WeakHashMap を使用することをお勧めしますか、それとも Hashmap で十分であり、このセットアップと循環参照はメモリ管理を損なうことはありません。