nearlyfreespeech.net является полуоблаком так сказать и помогает тонне в таких ситуациях. Как другие вышеупомянутое, разделенное на уровни кэширование помогает много. Вытяните блоки информации от memcached вместо базы данных, имейте обратный прокси (или распределенный обратный прокси иначе CDN, Сети Пантеры являются дешевыми) перед Вами.
Время жизни компонента контролируется его владельцем; они НЕ считаются ассоциациями. Таким образом, вы не можете получить компонент отдельно из запроса. Однако вы можете использовать его в критериях.
Предполагая, что ваш класс «Address» отображается как «адрес» в «Person», вы можете сделать что-то вроде:
Criteria.createCriteria(Person.class)
.add(Restrictions.eq("address.street", street));