Первый может быть быстрее, потому что провайдер JPA не должен анализировать запрос JPA. Но результирующий SQL должен быть точно таким же.
Кроме того, я думаю, некоторые провайдеры могут относиться к ним по-разному в отношении кеширования - кеширование по ключу или кеширование запросов.
Наконец, API гораздо приятнее с find()
- он либо возвращает одну запись, либо null
. Последний либо возвращает ровно один результат (getSingleResult()
- или бросает), либо возвращает список (getResultList()
).