java - 在 Java 中映射多对多关联的最佳方法

标签 java jakarta-ee many-to-many

我想知道在 JAVA 中映射多对多关联的最佳方法是什么。我有三个表这样描述:

+----------+    +-----------------+    +----------+ 
| products |    | products_stores |    | stores   | 
+----------+    +-----------------+    +----------+ 
| barecode |    | #barecode       |    | storeID  | 
| name     |----| #storeID        |----| location | 
+----------+    | price           |    +----------+ 
                +-----------------+    

我正在考虑用 JAVA 表示它的两种方法。我想知道哪个在性能或其他方面更好。

第一种方式:

    public class Product {

        private String name;
        private String barecode;
        private double price;
        private Store store;

        public Product(String name, String barecode, double price, Store store){/*...*/}
        //getter/setter
    }

    public class Store {

            private String name;
            private String location;

            public Store(String name, String location){/*...*/}
            //getter/setter
    }

第二种方式:

    public class Product {

        private String name;
        private String barecode;
        private HashMap<Store, double> priceList;

        public Product(String name, String barecode, HashMap<Store, double> priceList){//}
        //getter/setter
    }

    public class Store {

            private String name;
            private String location;

            public Store(String name, String location){/*...*/}
            //getter/setter
    }

我首先想到的是第一种方式,但我也想到了第二种方式,我想知道哪种方式更好,如果有的话。或者是否有比这两种更好的方法。

谢谢。

最佳答案

我会选择三个对象,就像您有三个数据库表一样:

  • Product独立于销售地点描述产品
  • Store描述商店
  • ProductOffer描述提供产品的地点和价格

根据您的用例,ProductOffer 列表s 可能是 Store 的一部分或 Product ,或者可以有一个独立的容器来管理产品和商店之间的关系,例如使用多图 Product -> List<ProductOffer> .或者 ProductOffer可以同时链接到 ProductStore .

为第三类创建一个类的理由是可扩展性 - 例如,它可以轻松满足您想要考虑商店中产品可用性的需求。

关于java - 在 Java 中映射多对多关联的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33283943/

相关文章:

应用程序中的 Java 游戏声音(例如,而不是小程序)

Java ConcurrentSkipListMap的computeIfAbsent方法 "applied once atomically"

java - 在 Spring Data cassandra 中查询两列

java - 如何在 Java EE 中管理 session ?

java - 什么是用于构建服务器应用程序的好的java框架?

java - 在 session 中存储数据,如何以及何时检测数据是否过时

Java Persistence 与 self 的多对多关系

java - hibernate envers 对多对多关系的删除操作未得到审核

django - 我如何将字段链接到 Django 模型中的多值字段

Java多态性利用