一、差別與定義
LONG: 可變長的字元串資料,最長2G,LONG具有VARCHAR2列的特性,可以存儲長文本一個表中最多一個LONG列
LONG RAW: 可變長二進制資料,最長2G
CLOB: 字元大對象Clob 用來存儲單位元組的字元資料
NCLOB: 用來存儲多位元組的字元資料
BLOB: 用于存儲二進制資料
BFILE: 存儲在檔案中的二進制資料,這個檔案中的資料隻能被隻讀訪。但該檔案不包含在資料庫内。
[size=x-small][color=blue]bfile字段實際的檔案存儲在檔案系統中,字段中存儲的是檔案定位指針.bfile對oracle來說是隻讀的,也不參與事務性控制和資料恢複。[/color][/size]
二、clob、blob實作方式
1、[color=red]Clob字段[/color] - 注解方式的實作
2、[color=red]Clob字段[/color] - 映射檔案的實作
3、[color=blue]Blob字段[/color] - 注解方式的實作
4、[color=blue]Blob字段[/color] - 映射檔案的實作
1、[color=red]Clob字段[/color] - 注解方式的實作
Hibernate 配置檔案:hibernate.cfg.xml
測試程式:
[size=large][color=blue]提示:[/color][/size]
[color=red]1. 在Oracle10g + 10g驅動(或者Oracle11g + 11g驅動)的環境下,隻需要在Clob字段上,增加注解@Column(name = "CONTENT", columnDefinition = "CLOB"),即可成功實作建表、Clob字段的讀寫操作。
2. 在Oracle9i+9i的驅動環境下,僅增加注釋@Column(name = "CONTENT", columnDefinition = "CLOB")時,建表、寫人資料均能正常,但讀取時會顯示資料為空。如果在Oracle9i下又必須用9i的驅動,可以在Clob字段中再增加一行注解@Lob 或者 @Type(type = "text")。([color=blue]運用spring中org.springframework.jdbc.support.lob.OracleLobHandler,這個沒有具體實踐過,就不在本文展開了[/color] )
3. 在Oracle9i+10g的驅動環境下,增加注解@Column(name = "CONTENT", columnDefinition = "CLOB"),同樣可以成功實作建表、Clob字段的讀寫操作,可見9i的驅動對Clob支援不是很好,但10g、11g已經做了更新。[/color]
2、[color=red]Clob字段[/color] - 映射檔案的實作
Bean檔案:
映射檔案:tb_bigstr.hb.xml
在hibernate.cfg.xml檔案中增加域對象的映射檔案:
測試程式:
[size=large][color=blue]提示:[/color][/size]
[color=red]如果是映射檔案的,隻需要把Clob字段的類型指定為text即:type="text"。
[/color]
3、Blob字段 - 注解 方式的實作
在hibernate.cfg.xml中增加域對象:
<mapping class="michael.hibernate.bigstring.oracle.TbBigStrBlob" />
運作測試程式:
[size=large][color=blue]提示:[/color][/size]
[color=red]對于byte[] 類型的字段如果要映射成Blob字段,隻需要在該字段增加如下注解即可:[/color]
4、Blob字段 - 映射檔案的實作
bean檔案
映射檔案:tb_bigstr.hb.xml
測試程式:
[size=large][color=blue]提示[/color][/size]
[color=red]對于是映射檔案的方式,Blob字段的類型指定為binary即:type=" binary "。
[/color]
本文轉自:http://sjsky.iteye.com/blog/1154916