不推荐使用的Hibernate.createClob(Reader reader,int length)的替代品是什么

时间:2012-02-16 01:23:11

标签: hibernate deprecated clob

在版本3.6.x中不推荐使用Hibernate.createClob(Reader reader, int length) 它建议使用Use LobHelper.createClob(Reader, long)代替。

但是LobHelper是一个不是类的接口。

static method Hibernate.createClob(Reader reader, int length)还有替补吗?

3 个答案:

答案 0 :(得分:5)

我正在使用该类的createBlob(bytes [])。我创建了一个新类和以下方法

    public static Blob createBlob(byte[] bytes) {
       return NonContextualLobCreator.INSTANCE.wrap(NonContextualLobCreator.INSTANCE.createBlob(bytes));
    }

答案 1 :(得分:4)

这是通过隐藏实现来简化使用的方法。如果您想使用Clob数据,则需要使用以下代码。我已在版本hibernate 3.6中对其进行了测试。

session.getLobHelper().createClob("the_string");

现在提出关于它的工作的第二点,如果你阅读org.hibernate.impl.SessionImpl类的源代码,你就会知道内部hibernate如何处理它。

public LobHelper getLobHelper()
/*      */   {
/* 2245 */     if (this.lobHelper == null) {
/* 2246 */       this.lobHelper = new LobHelperImpl(this, null);
/*      */     }
/* 2248 */     return this.lobHelper;
/*      */   }

答案 2 :(得分:0)

我找到了另一个好的替代品, 使用java javax.sql.rowset.serial.SerialClob

例如

Clob clob = new SerialClob("Some very long String.......".toCharArray());