session.connection () устарел в Hibernate?

Нам нужно иметь возможность получить связанный java.sql.Connection сеанса гибернации. Никакое другое соединение не будет работать, так как это соединение может быть связано с запущенной транзакцией.

Если session.connection () устарела, как мне это сделать?

76
задан KatieK 5 November 2012 в 16:07
поделиться

2 ответа

Теперь вам нужно использовать Work API:

session.doWork(
    new Work() {
        public void execute(Connection connection) throws SQLException 
        { 
            doSomething(connection); 
        }
    }
);

Или, в Java 8+:

session.doWork(connection -> doSomething(connection)); 
85
ответ дан 24 November 2019 в 11:13
поделиться

Если session.connect () теперь устарел, как мне это сделать?

Вы должны использовать Session # doWork (Work) и ] Work API, как указано в документации Javadoc:

connection ()
Не рекомендуется. (планируется удалить в 4.x). Замена зависит от необходимости; для прямого выполнения работы с JDBC используйте doWork (org.hibernate.jdbc.Work) ; для открытия использования «временного сеанса» (TBD).

У вас есть время до Hibernate 4.x, но использование устаревшего API как-то выглядит так:

alt text:)

Обновление: Согласно RE: [hibernate-dev] При проксировании соединения в списке hibernate-dev кажется, что первоначальная цель отказа от поддержки заключалась в том, чтобы препятствовать использованию Session # connection () , потому что он считался / считается «плохим» API , но на тот момент он должен был остаться. Думаю, они передумали ...

23
ответ дан 24 November 2019 в 11:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: