Explicação

A classe Aluno tem uma coleção de Curso e vice-versa.

A anotação @ManyToMany na classe Aluno indica que a relação é muitos para muitos.

A anotação @JoinTable define explicitamente a tabela intermediária chamada aluno_curso com as colunas aluno_id e curso_id.

O parâmetro mappedBy na classe Curso especifica que a associação Many-to-Many foi definida na classe Aluno.

Atualizado