ORM - это просто отображение между базой данных и объектами кода. Если вы настроите и будете использовать его, вы «почувствуете» его, и он не будет казаться таким «волшебным».
Вот предложение - настройте простой проект с использованием Hibernate, сначала с одной таблицей, а затем с реляционным примером (то, что требует объединения). Hibernate можно настроить для регистрации запросов во время работы, чтобы вы могли видеть, как они переводятся.
Другой вариант - запускать аналогичные упражнения с несколькими структурами, например, rails activerecord (который довольно прост в настройке).
после этого (возможно, немного продвинутый) попытайтесь написать свою собственную, может быть, не что-то полномасштабное, которое обрабатывает конфигурации "многие ко многим", а просто что-то, что сопоставляет запрос API с сгенерированным запросом базы данных и создает объект из вывода. Это определенно демистифицирует процесс.