The hibernate best practices states that many-to-many associations are rare and should be avoided.
Do not use exotic association mappings:
There is nothing intrinsically wrong with using @ManyToMany
but in practice, you rarely have the opportunity to use it. Usually you need additional attributes on the link itself, at which point, the relationship becomes an entity of its own.
One example from my experience was the kind of person/team relationship you described. I used a @ManyToMany
at first, but had to turn it into a @OneToMany
once I needed to add an effective-date on the relationship (person belongs to team at specific point in time).