Существуют ли какие-либо преимущества использования именованных запросов в сравнении с тем, что у нас есть? Глядя на производительность, удобство использования, ремонтопригодность и т.д. и т.п ....Каковы преимущества использования названных запросов в Hibernate Annotation
В нашем приложении мы определили наши запросы, как, например:
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 ......")
А в верхней части нашего объектов DAO.
Я видел this posting, который, кажется, является хорошим способом организовать все эти запросы. Или, может быть, настало время переоценить нашу базу данных и структуры объектов, если у нас так много таких запросов.
IMO лучше ответы здесь: http://stackoverflow.com/a/7770977/891479 –