Нам нужно иметь возможность получить связанный java.sql.Connection
сеанса гибернации. Никакое другое соединение не будет работать, так как это соединение может быть связано с запущенной транзакцией.
Если session.connection () устарела, как мне это сделать?
Теперь вам нужно использовать Work API:
session.doWork(
new Work() {
public void execute(Connection connection) throws SQLException
{
doSomething(connection);
}
}
);
Или, в Java 8+:
session.doWork(connection -> doSomething(connection));
Если
session.connect ()
теперь устарел, как мне это сделать?
Вы должны использовать Session # doWork (Work)
и ] Work
API, как указано в документации Javadoc:
connection ()
Не рекомендуется. (планируется удалить в 4.x). Замена зависит от необходимости; для прямого выполнения работы с JDBC используйтеdoWork (org.hibernate.jdbc.Work)
; для открытия использования «временного сеанса» (TBD).
У вас есть время до Hibernate 4.x, но использование устаревшего API как-то выглядит так:
:)
Обновление: Согласно RE: [hibernate-dev] При проксировании соединения в списке hibernate-dev кажется, что первоначальная цель отказа от поддержки заключалась в том, чтобы препятствовать использованию Session # connection ()
, потому что он считался / считается «плохим» API , но на тот момент он должен был остаться. Думаю, они передумали ...