IMHO, there is no such thing as best practice in general . However, referring to a user with transactions in an object-oriented context, I would model the user to have a list or set of transactions with each transaction that has a link to its user object.
That way you can either get all the user’s transactions by simply getting the user’s object and then getting the list of transactions.
On the other hand, you can request transactions for a specific user, limited to a specific type. Since each transaction has an association with a user object, you always get the correct context, included "for free."
Of course, you should consider parameters such as lazy and impatient loading, depending on what happens to the objects after they are restored (they are used in the process or they are serialized and transferred to the remote process, etc.) ..
source share