Скажем, у Вас есть набор Car
объекты (строки базы данных), и у каждого Car
есть набор Wheel
объекты (также строки). Другими словами, Car
-> Wheel
1-many отношения.
Теперь, скажем, необходимо выполнить итерации через все автомобили, и для каждого, распечатать список колес. Наивная реализация O/R сделала бы следующее:
SELECT * FROM Cars;
И затем для каждого Car
:
SELECT * FROM Wheel WHERE CarId = ?
, Другими словами, у Вас есть один выбор для Автомобилей, и затем N дополнительные выборы, где N является общим количеством автомобилей.
, С другой стороны, можно было получить все колеса и выполнить поиски в памяти:
SELECT * FROM Wheel
Это сокращает количество распространений в прямом и обратном направлениях к базе данных от N+1 до 2. Инструменты Most ORM дают Вам, несколько способов предотвратить N+1 выбирают.
Ссылка: Персистентность Java с В спящем режиме , глава 13.