Есть ли преимущества использования именованных запросов по сравнению с тем, что мы имеем? Смотря на производительность, удобство использования, ремонтопригодность и т. Д. И т. Д.
В нашем приложении мы определили наши запросы так:
private static final String SELECT_CODE_FOR_STORE = "select DISTINCT code from Code code "
+ "join code.codeDescriptions codeDesc "
+ "join codeDesc.stores store where store.id =:"
+ DataAccessConstants.PARAM_STORE_ID;
(Все они помещены в объект DAO, и их много.)
И мы вызываем вышеупомянутое с помощью:
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("storeId", codeDescriptionSearchCriteria.getStoreId());
List<Code> list = getJpaTemplate().findByNamedParams(
SELECT_CODE_FOR_STORE, paramMap);
return list;
Что не более, чем:
public List findByNamedParams(final String arg0,
final Map<String,
? extends Object> arg1) throws DataAccessException
{
return org.springframework.orm.jpa.JpaTemplate.findByNamedParams(arg0, arg1);
}
По сравнению с использованием
@NamedQuery(name="SELECT_CODE_FOR_STORE", query="select ......")
A вершина наших объектов DAO.
Я видел эту публикацию , которая, кажется, является хорошим способом организовать все эти запросы. Или, может быть, пришло время пересмотреть нашу базу данных и объектные структуры, если у нас так много запросов такого типа.