欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Spirng 对clob blob数据的处理

程序员文章站 2024-01-10 09:20:46
...

在Hibernate中文件列对应的类型可以是org.springframework.orm.hibernate3.support.BlobByteArrayType,org.springframework.orm

在Hibernate中文件列对应的类型可以是org.springframework.orm.hibernate3.support.BlobByteArrayType,
org.springframework.orm.hibernate3.support.ClobStringType、clob、blob、binary。什么时候用BlobBYteArrayType
什么时候用ClobStringType?一般如果要处理的对象是数据库字段类型是blob时(主要是图片,二进制对象等),
映射文件设置为:org.springframework.orm.hibernate3.support.BlobByteArrayType 数据库字段是clob(大文本对象)
类型时,要将java的属性的类型定为String,映射文件设置为: org.springframework.orm.hibernate3.support.ClobStringType。

4.如果在spring上要使用Struts中自带的上传功能必须在spring的配置文件中加以声明.否者将会出现?
簀ava.lang.IllegalStateException: - lobHandler property
must be set on LocalSessionFactoryBean异常。配置如下:

(1).声明一个处理句柄:
<bean lazy-init="true" />
(2).在sessionFactory中注入lobHandler:
<bean>
<property ref="lobHandler"/>
</bean>

提示: 指定lobHandler时,,对于MySQL、DB2、MS SQL Server、Oracle 10g,使用DefaultLobHandler即可,而Oracle 9i,
则可以使用OracleLobHandler。因为Oracle9i处理lob的方式和不太一样,所以这里要用spring提供的SimpleNativeJdbcExtractor.处理Oracle9i lob类型的特殊声明:

<bean lazy-init="true" />

<bean lazy-init="true" >
<property>
<ref bean="nativeJdbcExtractor"/>
</property>
</bean>

<bean class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<!-- 为处理Blob类型字段的句柄声明 -->
<property>
<ref local="lobHandler" />
</property>
</bean>

同时还应该使用对应的JDBC驱动。

Clob字段定义:<property column="列名" type="org.springframework.orm.hibernate.support.ClobStringType"
length="1048"/>这里的length是指字节,最大可以到2G.该字段在java对象中声明为String类型。

 如果使用的是mysql数据库其默认的上传文件大小只有1047552字节:如果上传的文件大于1047552字节则会出现异常
org.springframework.jdbc.UncategorizedSQLException: You can change this value on the server by setting
the max_allowed_packet' variable.根据提示可以修改mysql数据库的max_allowed_packet属性大小。
打开my.ini文件中找到# SERVER SECTION后在port=3306下面加上max_allowed_packet=?M 修改完后重启mysql服务即可成功上传。

Spirng 对clob blob数据的处理