Надеюсь, у вас все хорошо.
Этот пост касается соображений производительности при использовании @SuppressWarnings ("unchecked") при получении информации из базы данных.Я пришел с вопросом к руководству в моей компании, и это похоже на серую область.Пример выглядит следующим образом.
Сценарий 1:
public List<BusinessObject> retrieveInformation(Long id){
List<? extends Object> info = persistenceService.get("namedQuery", params, values);
//... cast the contents one by one to List<BusinessObject> and return
}
Сценарий 2:
public List<BusinessObject> retrieveInformation(Long id){
List<?> info = persistenceService.get("namedQuery", params, values);
//... cast the contents one by one to List<BusinessObject> and return
}
Сценарий 3:
public List<BusinessObject> retrieveInformation(Long id){
List<BusinessObject> info = (List<BusinessObject>)persistenceService.get("namedQuery", params, values);
//... return the List<BusinessObject>
}
Сценарий 4:
@SuppressWarnings("unchecked")
public List<BusinessObject> retrieveInformation(Long id){
List<BusinessObject> info = persistenceService.get("namedQuery", params, values);
//... return the List<BusinessObject>
}
Конечно, есть намного больше способов сделать это, но моя забота - способ сделать этот процесс с наилучшей производительностью.Таким образом, мы должны принять во внимание, что при получении информации у нас может быть ошибка в запросе, и будет исключение;Кроме того, если такой ошибки нет, мы уже знаем тип объектов, которые будут извлечены.
Итак, обдумывая это с точки зрения крупного бизнес-проекта со всеми его компонентами вПоместите, скажем, слой гибернации, DAO и DTO, не могли бы вы помочь мне определить:
- Один вариант с лучшими характеристиками производительности.
- Если аннотация @SuppressWarnings ("unchecked")имеет соображения производительности.
- Если избавление от @SuppressWarnings ("unchecked") является хорошей практикой в этой области.
Хорошего дня.