Вы можете использовать собственный SQL и отобразить результат на объект:
sess.createSQLQuery("SELECT * FROM CATS").addEntity(Cat.class);
Синтаксис JDBC для вызова процедуры хранения выглядит следующим образом:
CallableStatement proc =
connection.prepareCall("{ call set_death_age(?, ?) }");
proc.setString(1, poetName);
proc.setInt(2, age);
Так что возможно , вы можете вызвать хранимую процедуру и сопоставить ее с объектом:
sess.createSQLQuery("{ call my_stored_proc }").addEntity(Cat.class);
Также обратите внимание, что обновления , выполненные с помощью хранимых процедур, выйдут из режима гибернации, а это значит, что вам придется выселять объекты из 1-го уровня и 2-го уровня кеш самостоятельно.
Итак, как вы видите, гибернация и хранимая процедура на самом деле не подходят друг другу естественным образом .
мы настроили хранимую процедуру, потому что
мы не хотим, чтобы разработчик знал
все поля в дб. если таблица изменится,
тогда нам нужно обновить вышеуказанные файлы.
Если вас беспокоит безопасность , используйте: