Hibernate官方推荐使用many-to-many还是many-to-one?

假设实体的关系就是多对多,我应该是在数据库中创建两张表,还是三张表?

如果创建两张表,那么就需要在xml中配置many-to-many

如果创建三张表,那么就需要在第三张的表中存储其余两个表的主键,在xml中直接配置many-to-one

这两种方式那个好?

具体使用哪种应该由你的业务决定的吧,如果是多对一的关系就使用many-to-one例如一个人有多个邮箱地址;多对多关系,例如选课一个人可以选多个课,而一门课程又被多个人选择,双向多对多就用many-to-many。

根据需要,比如说购物就是典型的many-to-many,一个商品可以放入很多订单,很多人买。一个订单可以包含很多种商品。比如说你一个订单买了一个手机一个壳一个耳机。

除了m2m m2o,还有 o2o,有时候我们需要把大表拆开,那么就是o2o。比如用户的头像虽然也属于用户,但是二进制文件我们单独放一个表。

public class Person {
private Long id;
private String name;
private Depart depart;}

public class Depart {
private Long id;
private String name;
Set person;}

person.cfg.xml  :