spring+hibernate+oracle9i用clob


修改hibernate的配置如下
代码
< bean  id ="nativeJdbcExtractor"  class ="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" />

< bean  id ="oracleLobHandle"  class ="org.springframework.jdbc.support.lob.OracleLobHandler"  Lazy-init ="true" >
 
< property  name ="nativeJdbcExtractor" >
   
< ref  local ="nativejdbcExtractor" />
 
</ property >
</ bean >


在有clob类型sessionFactory(org.springframework.com .hibernate.LocalSessionFractory Bean)中加入
<property name="lobHandler"><ref bean="oracleLobHandle"/>< /property>

在需要clob的JavaBean对应的hbm.xml中,改对应的clob类型的字段

代码
< property
 
name =""
 type
="org.springframework.orm.hibernate.support.ClobStringType"
 clumn
=""
 length
="XXXXXX" <!-- 定义clob字段大小(以字节为单位,最大2GB)-->
>

JavaBean的对应的属性类型为String

------------------------------------------------------------------------------
---- hibernate3 使用blob 和 clob 演例代码-----

hibernate3 使用blob 和 clob 演例代码:

 1 import  java.io.File;
 2 import  java.io.FileInputStream;
 3 import  java.io.OutputStream;
 4 import  java.io.Writer;
 5 import  java.sql.Clob;
 6 import  oracle.sql.CLOB;
 7 import  org.hibernate.LockMode;
 8 import  org.hibernate.Transaction;
 9 import  org.hibernate.Session;
10 import  org.hibernate.Hibernate;
11 import  org.hibernate.lob.SerializableBlob;
12 import  org.hibernate.lob.SerializableClob;
13
14
15 public   class  test1  {
16
17        /**
18         * @param args
19         */

20        static Session session = HibernateSessionFactory.currentSession();
21        
22        public boolean inserted(TStu obj){
23                
24                Transaction tran = session.beginTransaction();
25                session.save(obj);
26                session.flush();
27                session.refresh(obj,LockMode.UPGRADE);
28                try
29                {
30                SerializableBlob sb = (SerializableBlob)obj.getImg();
31                java.sql.Blob wrapblob = sb.getWrappedBlob();
32                if(wrapblob instanceof oracle.sql.BLOB){
33                         oracle.sql.BLOB blob = (oracle.sql.BLOB) wrapblob;
34                OutputStream bout = blob.getBinaryOutputStream();
35                FileInputStream fin = new FileInputStream("d://a.jpg");//修改你要存入的图片
36                byte [] buf = new byte[10240];//做为10K的缓存写入
37                int len;
38                while((len = fin.read(buf))>0){
39                        bout.write(buf,0,len);
40                }

41                bout.close();
42                fin.close();
43                }

44                
45                SerializableClob  sc = (SerializableClob)obj.getResu();
46                Clob wrapclob = sc.getWrappedClob();
47                if(wrapclob instanceof CLOB){
48                        CLOB clob = (CLOB)wrapclob; 
49                        Writer cout = clob.getCharacterOutputStream();
50                        File file = new File("C://log_2005_8.txt");//修改你要存如的文本
51                        FileInputStream fin = new FileInputStream(file);
52                        int read;
53                        while((read = fin.read())!= -1){
54                                cout.write(read);
55                        }

56                        fin.close();
57                        cout.close();
58                }

59                
60                tran.commit();
61                return true;
62                }
catch(Exception ex){
63                        ex.printStackTrace();
64                        tran.rollback();
65                        return false;
66                }

67        }

68        
69        public static void main(String[] args) {
70                // TODO Auto-generated method stub         
71                test1 t = new test1();
72                 TStu stu = new TStu();
73                 stu.setAge(new Integer("23"));
74                 stu.setName("lilei");
75                 stu.setImg(Hibernate.createBlob(new byte[1]));
76                 stu.setResu(Hibernate.createClob(" "));
77                 t.inserted(stu);        
78        }

79}

80
81
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值