Spring+Struts+Hibernate 架构中对Oracle9i中clob字段的处理之--新增数据篇

在最近的项目中,要使用oracle9i数据库,而且用到clob字段进行数据存取。

以下是一个对clob字段插入数据库的处理。

前提:

1.ParProperty ppro 中有一个getBz()的方法,返回String

2.UInfo ui是表对象,有一个pasw属性,是java.sql.Clob类型,对应的xml文件中是这样定义的:

< property name = " pasw "  type = " java.sql.Clob " >
            
< column name = " PASW "   />
</ property >

思路:

1.由于不能直接插入数据长度太大的数据,因此第一步先插入一个假的(较短)的无意义的字符串,并提交到数据库。

2.接着将刚插入的数据“定位”,马上将真正的有意义的数据替换刚才插入的假数据,并更新到数据库。

 

public   void  saveClob(ParProperty ppro) {
        UInfo ui 
= new UInfo();
        Session hsession 
= getHibernateTemplate().getSessionFactory().openSession();
        Transaction tx 
= hsession.beginTransaction();
        
        
//第一次插入假clob数据
        tx.begin();
        String content 
= " ";
        Clob clob 
= Hibernate.createClob(content);
        ui.setPasw(clob);
        hsession.save(ui);
        tx.commit();
        
        
//第二次插入真clob数据
        tx.begin();
        hsession.refresh(ui, LockMode.UPGRADE);        
//锁定位置
        SerializableClob sclob = (SerializableClob) ui.getPasw();
        clob 
= sclob.getWrappedClob();
        CLOB clob2 
= (CLOB) clob;
        Writer writer;
        
try {
            writer 
= clob2.getCharacterOutputStream();
            writer.write(ppro.getBz());
            writer.close();
        }
 catch (Exception e) {
            
            
// TODO Auto-generated catch block
            e.printStackTrace();
                  
        }
 

 小结:先插入“假”,再替换成“真”,这是对付clob的一个方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值