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