特定のドメインの問題を銀行口座に抽象化しようとしています。次の状況を想定しています。
- 特定の顧客の銀行ログインがあります。
- 各顧客は、同じログインに属する複数の銀行口座を持つことができます。
- 各銀行口座には、何千ものトランザクションがあります。
クラス構造を次のように設計しました(簡略化):
public class Login
{
private List<Account> _bankingAccounts;
....more fields, ctor, getters, setters...
}
public class Account
{
private List<Transaction> _transactions;
....more fields, ctor, getters, setters...
}
public class Transaction
{
String _comment;
....more fields, ctor, getters, setters...
}
でも、たとえば20アカウントで、それぞれに10000のトランザクションがあり、データベースからモデル全体をロードすると、顧客がこれらすべてのトランザクションを必要としているかどうかはわかりませんが、大量のメモリが必要になります。
私はこのようなより単純化されたモデルを構築しようと思いました:
public class Login
{
private List<SimpleAccount> _bankingAccounts;
....more fields, ctor, getters, setters...
}
public class SimpleAccount
{
....more fields, ctor, getters, setters...
}
public class Account
{
private List<Transaction> _transactions;
....more fields, ctor, getters, setters...
}
public class Transaction
{
String _comment;
....more fields, ctor, getters, setters...
}
次に、簡略化されたアカウント(すべてのトランザクションが含まれていない)を使用してアカウントモデルをロードし、ユーザーが特定のアカウントのトランザクションを表示するように要求した場合にのみ、この単一のアカウントオブジェクト全体をロードします。
その方法は大丈夫でしょうか?より良いアプローチはありますか?