现在我们讨论领域模型SnackMachine和Money地数据库设计。

    1. public final class SnackMachine extends Entity{
    2. public Money moneyInside;
    3. public Money moneyInTransaction;
    4. }
    5. public class Money extends ValueObject{
    6. public int oneCentCount;
    7. public int tenCentCount;
    8. public int quarterCount;
    9. public int oneDollarCount;
    10. public int fiveDollarCount;
    11. public int twentyDollarCount;
    12. }

    首先我们需要明确哪些字段需要持久化,这个问题有必要领域专家讨论。如果moneyInside,moneyInTransaction都需要存储,那么也就意味着不仅交易结果需要持久化,过程呀需要。
    image.png
    image.png
    image.png
    我们可能会设计两张表,SnackMachine通过外键联结Money。这是好地设计模式,但有两个大问题:一,Money类含有id字段,这违反了它作为值对象地特性;二,这使Money能过脱离SnackMachine存在,显然又违反了值对象的原则。最好地方法使将它们合成一张表:
    image.png
    image.png
    借助Spring boot,我们无需手动创建表。