До сих пор я видел, что уровень кэша 1 используется только для того, чтобы откладывать вызовы sql до сброса транзакции.
Проще говоря, кэш первого уровня - это просто карта от id (первичный ключ) до объекта, который содержит состояние, связанное с этим первичным ключом.
Но вы не должны смешивать понятия сеанса и транзакции, они не одно и то же (и сеанс не обязательно ограничен областью транзакции).
Если бы я должен был загрузить один и тот же объект несколько раз в течение одной транзакции, что бы произошло?
Будет только один объект, представляющий данную строку в базе данных (т.е. для данного идентификатора). Вот что делает возможным управление состоянием, и в этом весь смысл кэша 1-го уровня.
Использует ли hibernate какую-то карту идентичности и кэширует объекты, которые были загружены в течение 1 транзакции
Смотри выше.