多对多的关系现实中也有很多, 学生选课程,订单和产品,老师和学生。
继续复用前面的类Order,新加一个Product类, 并以订单和产品的关系来分析多对对关系。多对多表现的比较特殊的地方是需要中间表,我们已经有了order(订单)表,添加一个product(产品)表,为了实现order(订单)和product(产品)的多对多关系, 还需要一个中间表,叫做order_line(暂且就叫做订单流水线表),当用户选择产品并且确定一个订单后,除了在order表添加一条记录以外,还会在order_line中添加n条记录来表明这一个订单关联了多个产品, 同样, 多个用户下的多个订单中, 都可能包含某一个产品, 这样就形成了多对多的关系. 需要作这么几个工作:添加一个Product对象,它包含一个Set,set里面放与之关联的Order;修改Order.java,添加一个属性products,用来持有与之关联的Product; 修改映射文件。
Order.java:
Product.java:
Order.hbm.xml:
Product.hbm.xml:
到现在, 从会员到订单, 从订单到产品都关联起来了,可以修改一下MemberHibernateDao.java的测试用例, 测试以下从一个Member对象一直找到Product.