深蓝色心情

过来聊聊~~~~

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  31 Posts :: 0 Stories :: 46 Comments :: 0 Trackbacks
 
数据库驱动更新为classes12-9i.jar
修改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.LocalSessionFractoryBean)中加入
<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 演例代码:

 1import java.io.File;
 2import java.io.FileInputStream;
 3import java.io.OutputStream;
 4import java.io.Writer;
 5import java.sql.Clob;
 6import oracle.sql.CLOB;
 7import org.hibernate.LockMode;
 8import org.hibernate.Transaction;
 9import org.hibernate.Session;
10import org.hibernate.Hibernate;
11import org.hibernate.lob.SerializableBlob;
12import org.hibernate.lob.SerializableClob;
13
14
15public 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



org link: http://www.matrix.org.cn/thread.shtml?topicId=27138&forumId=23
posted on 2005-11-18 10:42 深蓝色心情 阅读(2525) 评论(2)  编辑  收藏 所属分类: Java

Feedback

# re: spring+hibernate+oracle9i用clob 2006-07-08 13:02 jjs
SerializableClob sc = (SerializableClob)obj.getResu();
这一句提示,不能哆强行转化,这是怎么回事 resu为string,  回复  更多评论
  

# re: spring+hibernate+oracle9i用clob 2006-07-08 13:04 jjs
像得用这种方式插入clob是否要直接跟操作String 一样的,这个我试了一下,报错,但网上有人说在这种配置下,可以直接操作clob  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: