﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-fish的Blog-文章分类-hibernate</title><link>http://www.blogjava.net/yjj317/category/17392.html</link><description>在浮躁的年代里，我们进取心太切，患得患失；虚荣心太强，战战兢兢。一心争强好胜，惟恐榜上无名。</description><language>zh-cn</language><lastBuildDate>Thu, 01 Mar 2007 01:29:45 GMT</lastBuildDate><pubDate>Thu, 01 Mar 2007 01:29:45 GMT</pubDate><ttl>60</ttl><item><title>Struts+Spring+Hibernate中处理Oracle的大字段</title><link>http://www.blogjava.net/yjj317/articles/81820.html</link><dc:creator>fish的Blog</dc:creator><author>fish的Blog</author><pubDate>Fri, 17 Nov 2006 10:02:00 GMT</pubDate><guid>http://www.blogjava.net/yjj317/articles/81820.html</guid><wfw:comment>http://www.blogjava.net/yjj317/comments/81820.html</wfw:comment><comments>http://www.blogjava.net/yjj317/articles/81820.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yjj317/comments/commentRss/81820.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yjj317/services/trackbacks/81820.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Arial" size="2">对于BLOG和CLOB字段，大部分数据库提供了较为透明的支持，但Oracle比较特殊一些，在用Spring和Hibernate操作时，需要作一些特殊的处理，以CLOB为例，基本有下面几个步骤[注：下面大部分内容来自于网络]：</font>
		</p>
		<p>
				<font face="Arial" size="2">１、在Spring的配置文件中加入以下几个Bean的定义</font>
		</p>
		<p>
				<font face="Arial" size="2">&lt;bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor"/&gt;</font>
		</p>
		<p>
				<font face="Arial" size="2">&lt;bean id="oracleLobHandle" class="org.springframework.jdbc.support.lob.OracleLobHandler" Lazy-init="true"&gt;<br />&lt;property name="nativeJdbcExtractor"&gt;<br />&lt;ref local="nativejdbcExtractor"/&gt;<br />&lt;/property&gt;<br />&lt;/bean&gt; </font>
		</p>
		<p>
				<font face="Arial" size="2">２、在sessionFactory这个Bean中加入一个属性的引用<br />&lt;property name="lobHandler"&gt;&lt;ref bean="oracleLobHandle"/&gt;&lt;/property&gt;</font>
		</p>
		<p>
				<font face="Arial" size="2">３、在需要clob的JavaBean对应的hbm.xml中，改对应的clob类型的字段<br />&lt;property<br />name="XXX" type="org.springframework.orm.hibernate3.support.ClobStringType"<br />clumn=""<br />length="XXX" &lt;!--定义clob字段大小(以字节为单位，最大2GB)--&gt;<br />/&gt;</font>
		</p>
		<p>
				<font face="Arial" size="2">4、 JavaBean的对应的属性类型为String。</font>
		</p>
		<p>
				<font face="Arial" size="2">基本上是这四个要点。需要注意两点：(1)如果使用Oracle9i自带的class12.jar这个JDBC驱动的话是不行的，会报错，据说要升级到classes12-9i.jar，我在Oracle的网站上没找到对应的下载，下载了ojdbc14.jar就可以了。(2)对Clob或Blog的操作必须在一个事务中进行，如在Dao层测试会出错，在配置了事务的Logic层就没问题了。</font>
		</p>
		<p>
				<font face="Arial">
						<font size="2">经过测试,如果用Oracle10g的JDBC驱动就没这么麻烦了，Hibernate+Oracle+CLOB的读写其实只要这样做：</font>
				</font>
		</p>
		<p>
				<font face="Arial" size="2">1.在Oracle里设置某字段为clob类型。<br />2.在Hibernate的配置文件里使用网上下载的Oracle 10g最新的jdbc驱动。<br />3.实体类里把clob字段对应的属性类型设置为String。<br />4.hibernate的映射文件*.hbm.xml里把该字段对应的类型该为text。</font>
		</p>
		<p>
				<font face="Arial" size="2">然后就可以在程序里把它当成String随便用了。</font>
		</p>
		<font face="Arial" size="2">补充：按照上面的方法又写了一个测试类，能够操作Clob字段了，但是启动JBOSS后就不能用了，后来找了很久才发现，原来我用的JBOSS的default/lib目录下也有一下老版本的Class12.jar，删除它换成最新的ojdbc14.jar就可以了。<br /></font>
<img src ="http://www.blogjava.net/yjj317/aggbug/81820.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yjj317/" target="_blank">fish的Blog</a> 2006-11-17 18:02 <a href="http://www.blogjava.net/yjj317/articles/81820.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>