澄清java中具有多对多关系的设计/开发系统

时间:2012-12-05 05:54:07

标签: java uml

如果我们有多对多的关系,我们通过引入参考表将它们分解为1-m,这应该在ER图中描述。

例如,如果Item和Order是m-m,我们引入了ItemOrder引用表。

但是在开发系统时,我们是否将ItemOrder识别为实体(域类)?

1 个答案:

答案 0 :(得分:0)

是的,不,也许。

你有ItemOrder课吗?也许吧!

它会成为“域名类”吗? 它不会。域类中的关键字是。什么构成类取决于您的利益相关者如何看待域。在这种情况下,他们可能从未想过“物品订单” - 只有一个订单,它与物品有关系。 “订单”和“项目”是相关的域概念,因为它们对您的利益相关者来说是熟悉的; “项目订单”不是。

但是你可能会有一个ItemOrder课 - 但它可能是内部的。例如,如果您使用Row Data Gateway个对象,则Order类可能如下所示:

public class OrderRDG {

    private UUID orderId;

    public static OrderRDG[] find() { /* SQL code etc... */ }
    public static OrderRDG[] findById() { /* SQL code etc... */ }

    public UUID getOrderId() { return orderId; }

    public Item getItems() {
        ItemRDG[] items = []; // yes, I know Java arrays don't work like this - it's only an example
        OrderItemRDG[] orderItems = OrderItemRDG.findItemsByOrderId(orderId);
        for(OrderItemRDG orderItem:orderItems) {
            ItemRDG item = ItemRDG.findById(orderItem.getItemId());
            items.push(item);
        }
        return items;
    }

}