The best practice in agile programming is to use the simplest implementation. You don't have a crystal ball to know that in the future you will need additional information on the link table. So best practice suggest to use @ManyToMany because you can always add a field and a new class.
But, also I suggest to look carefully for the bidirectional associations between two objects. Even the relation is many-to-many, you should prefer unidirectional associations.
I suggest to look into the "Refactoring" book (Martin Fowler):
The refactoring on web, and an excerpt from the book (is not on the site):
"Bidirectional associations are useful, but they carry a price. The
price is the added complexity of maintaining the two-way links and
ensuring that objects are properly created and removed. Bidirectional
associations are not natural for many programmers, so they often are a
source of errors.
Lots of two-way links also make it easy for mistakes to lead to
zombies: objects that should be dead but still hang around because of
a reference that was not cleared.
Bidirectional associations force an interdependency between the two
classes. Any change to one class may cause a change to another. If the
classes are in separate packages, you get an interdependency between
the packages. Many interdependencies lead to a highly coupled system,
in which any little change leads to lots of unpredictable
ramifications. You should use bidirectional associations when you need
to but not when you don't. As soon as you see a bidirectional
association is no longer pulling its weight, drop the unnecessary
end."
Also look at the CQRS. Especially on command part. Maybe you only need to traverse the relation in one direction only.
And look also at the "Aggregate" pattern. Clients traverse the aggregate from root because they load the whole aggregate all the time.