Relación muchos a muchos

Tengo este ejemplo de hibernate:

La pregunta es como se realizaría esto mismo usando sentecnias sql directamente en el código.
precisamente esta este atributo y sus metodos me tiene confundido ya hace varios días.

private List materias = new ArrayList();

Debido a mi falta de conocimiento, no he podido guardar datos en tablas intermedias por que no se aun como armar correctamente las clases para crear objetos que tengan que guardar ese tipo de atributo de List y que son del tipo de otra clase.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de CharlieCorner

No entiendo

No entiendo del todo tu pregunta. ¿Te refieres a cómo modelas una relación muchos a muchos en una base de datos usando SQL nada más? Si es así, te recomiendo te leas algún libro de Diseño de Base de Datos.

No ahondaré mucho en el problema, por temor a que no sea tu pregunta, pero en una relación de muchos a muchos, cuando pasas del modelo conceptual al físico, generalmente se rompe en tres tablas: las dos que guardaban la relación en el modelo conceptual y la tercera es la tabla que las relaciona, generalmente usando las llaves como foráneas en la nueva tabla y además ambas como primarias. Es decir, cada unión de la llave primaria de una tabla combinada con la de la otra hará tu registro único. Por supuesto, cada quien mata las pulgas como mejor le parezca.

Ya para manipular los datos, te sería últi ver la lógica y sintaxis de los JOIN para no atascar de cláusulas WHERE, pero de nuevo, cada quien.

De cualquier manera, creo que no entendí el núcleo de tu pregunta. ¿Alguien más?