Здравствуйте, zelenprog, Вы писали:
Z>Посоветуйте плиз как сделать грамотно в русле разделения слоев и "чистой архитектуры".
Мне кажется, задача полностью делегируется слою БД, и план SQL-запроса оптимизируется по костам БД-инженером, это уже задача сопровожденцев вашей БД.
С точки зрения чистой архитектуры у вас есть обычный DAO-слой и Criteria API, который либо инкапсулирует в виде готовых промышленных библиотек (типа Hibernate, где уже есть внутренние оптимизаторы и кэши, при этом конечно имеет смысл подключить кэш второго уровня), либо делегирует подобные оптимизации БД.