Hibernate如何处理clob字段?

 我来答
百度网友0583ac2ea
2011-01-14 · TA获得超过957个赞
知道小有建树答主
回答量:167
采纳率:0%
帮助的人:218万
展开全部
hibernate配置方法:
<property name="textValue" column="TEXT_VALUE" type="clob" length="100000"/>
java代码:
public void update(DocumentData obj, String value)
throws HibernateException, Exception
{
Session s = null;
Writer out = null;
try
{
s = getSession();
s.flush();
Transaction tx = s.beginTransaction();
s.refresh(obj, LockMode.UPGRADE);//锁定更新记录;
CLOB clob = (CLOB) obj.getTextValue();
if (clob != null)
{
out = clob.getCharacterOutputStream();
out.write(value);
out.flush();//刷新内容,同步session和数据库内容。
out.close();
} else
{
obj.setTextValue(Hibernate.createClob(value == null ? ""
: value));
}
tx.commit();
} finally
{
if (null != s)
{
s.close();
}
if (out != null)
{
out.close();
}
}
}

public void insert(DocumentData obj)
throws HibernateException, Exception
{
Transaction t = null;
Session s = null;
try {
s = getSession();
t = s.beginTransaction();
s.save(obj);//obj对象包含Clob属性内容,可以直接insert
t.commit();
}
catch (HibernateException e) {
if (null != t) t.rollback();
throw e;
}
finally {
if (null != s) s.close();
}
}
趣事情
2015-10-20 · 知道合伙人互联网行家
趣事情
知道合伙人互联网行家
采纳数:517 获赞数:5452
电脑技术,软件开发。移动开发。网站建设相关专业知识。都可以提供解答和相关技术指导。

向TA提问 私信TA
展开全部
在spring中采用OracleLobHandler来处理oracle大字段(包括clob和blob),则在程序中不需要引用oracle的特殊类,从而能够保证支持代码支持多数据库。

在Spring的主配置文件xx.xml中的配置SessionFactory的bean中配置:

<bean id="nativeJdbcExtractor"
class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor"
lazy-init="true" autowire="default" dependency-check="default"/>

<bean id="oracleLobHandler"
class="org.springframework.jdbc.support.lob.OracleLobHandler"
lazy-init="true" autowire="default" dependency-check="default">
<property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"/>
</bean>

<bean id="sessionFactory"
class="org.hibernate.cfg.SWSSessionFactoryBean" lazy-init="false"
autowire="default" dependency-check="default">

...

<property name="lobHandler">
<ref bean="oracleLobHandler"/>
</property>

...

</bean>

nativeJdbcExtractor和 lobHandler 设置为 lazy-init="true",
因为 nativeJdbcExtractor需要通过运行期的反射机制获取底层的 JDBC 对象,
所以需要避免在 Spring 容器启动时就实例化这两个 Bean。

<注:上面的SWSSessionFactoryBean是被重写过的,继承AnnotationSessionFactoryBean>

1、首先数据表中的clob类型对应java持久化类的String类型;而blob类型对应byte[]类型
2、1.定义
hibernate标签时,持久化类中对应clob类型的属性的hibernate
type应为org.springframework.orm.hibernate.support.ClobStringType;而对应blob类型
的属性的hibernate
type应为org.springframework.orm.hibernate.support.BlobByteArrayType。

2.如果通过spring 注解功能配置PoJo类时,在该大字段属性的getXXX()方法前面加上注解:

public String xxx;

...

@Lob
@Type(type="org.springframework.orm.hibernate3.support.ClobStringType")
@Column(length=10000)
public String getXXX ()
{
return xxx;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
LHLBT3GOOD
2011-01-16 · TA获得超过546个赞
知道小有建树答主
回答量:401
采纳率:0%
帮助的人:538万
展开全部
配置方式:
再hibernate.cfg.xml中加入属性配置
< property name="hibernate.connection.SetBigStringTryClob">true</ property>

然后实体中,只要字段类型为String就行

Annotation配置方式(JPA方式)
使用String 为字段类型,然后配置@Clod

附带: blod类型
用byte[] 为类型,然后配置 @Blod注解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
郭伟新789
2011-01-15 · TA获得超过189个赞
知道小有建树答主
回答量:153
采纳率:0%
帮助的人:117万
展开全部
通过SPRING的处理方法。 你也可以在页面将前台传过来的FILE类型转换成: clob类型的,Hibernate.createClob(参数)即可插入。你可以看我的百度博客的第一篇文章,我最近在公司上传时也同样遇到了麻烦。如有不明白,可以追问或给我留言
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jeff1709
2011-01-15
知道答主
回答量:43
采纳率:0%
帮助的人:21.6万
展开全部
在DB里建成CLOB类型,在程序这边配置成String也可以~`
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式