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