Что является альтернативой для устаревшего Hibernate.createClob(Reader reader, int length)
Кажется, что Hibernate.createClob(Reader reader, int length)
устарел в версии 3.6.x
И вместо этого предлагается использовать Use LobHelper.createClob(Reader, long)
.
Но LobHelper
- это интерфейс, а не класс.
Есть ли альтернатива для static method Hibernate.createClob(Reader reader, int length)
?
Ответы
Ответ 1
Я использовал createBlob (bytes []) этого класса. Я создал новый класс и следующий метод
public static Blob createBlob(byte[] bytes) {
return NonContextualLobCreator.INSTANCE.wrap(NonContextualLobCreator.INSTANCE.createBlob(bytes));
}
Ответ 2
Это способ упрощения использования, скрывая реализации. Если вы хотите использовать данные Clob
, вам нужно использовать приведенный ниже код. Я тестировал его в версии hibernate 3.6
.
session.getLobHelper().createClob("the_string");
Теперь, перейдя к вашему второму вопросу о его работе, если вы прочитаете исходный код класса org.hibernate.impl.SessionImpl
, вы узнаете, как это делает внутренне спящий режим.
public LobHelper getLobHelper()
/* */ {
/* 2245 */ if (this.lobHelper == null) {
/* 2246 */ this.lobHelper = new LobHelperImpl(this, null);
/* */ }
/* 2248 */ return this.lobHelper;
/* */ }
Ответ 3
Я нашел для этого другую хорошую альтернативу,
используя java javax.sql.rowset.serial.SerialClob
Например
Clob clob = new SerialClob("Some very long String.......".toCharArray());