Что является альтернативой для устаревшего 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());