Я не внимательно посмотрел на код, но это
".. поэтому после первого выбора, который hibernate использует для определения, является ли объект новым или существовал, я получаю огромное количество команд SELECT .."
заставляет меня думать, что здесь есть какая-то проблема n + 1.Я не знаю, что вы делаете в своем коде, но я бы попробовал, чтобы обновить сущность, сначала загрузите ее из базы данных, используя ее идентификатор - поэтому Hibernate не придется проверять, существует ли она уже или нет, а затем изменять ее свойства., а затем сохранить его.Если по какой-либо причине вы все еще видите большое количество выборок, убедитесь, что тип выборки коллекций является LAZY (хотя я знаю, что LAZY может вызвать n + 1 проблем в других частях вашего приложения ... похоже, что Hibernate, по крайней мере, версияс которой я работаю, не разрешает разные режимы выборки для разных вариантов использования ..)
Надеюсь, это хотя бы подсказывает, где искать ..