Start here. This is the direct spoken answer to practice first.
Overview
Chooses relationship loading from cardinality, query count, result size, and hidden-I/O boundaries.
Lazy loading waits until code accesses a relationship, which is convenient but can hide extra queries. Joined loading fetches related rows in the same SQL statement and works well for bounded single-valued relationships, but collections can multiply rows. Select-in loading fetches parents first and related rows in a second query using their keys, which often fits collections. Raise-on-access is useful when unplanned lazy I/O should fail visibly.