BLOB/CLOB类型在HIBERNATE中的应用

    为什么需要clob/blob对象?
         在实际的项目开发过程当中,有时候需要存取比较大的数据。而在oracle中,varchar2的长度不能够满足需求,因此就得需要用到clob/blob。

    BLOB/CLOB在HIBERNATE中的如何应用?
       
   为了更好的理解,我们举一个文章发布的例子做为讨论。

          实体类(POJO)MessageArticle

          ........................
          private Clob content1;
          private String content;

         public String getContent() {
          return content;
        }

    public void setContent(String content) {
        this.content = content;
    }

    public Clob getContent1() {
        return content1;
    }

    public void setContent1(Clob content1) {
        this.content1 = content1;
    }
    ........................

   配置文件(*.hbm.xml)

   <property name="content1" type="clob">
            <column name="CONTENT"  />
        </property>

   CURD实现(保存和修改):
      String content = request.getParameter("content");
      MessageArticle article1 = new MessageArticle();
      ............................
      Integer articleid = (Integer)getHibernateTemplate().save(article1);

   try {
        MessageArticle article = (MessageArticle)getHibernateTemplate().load(MessageArticle.class, articleid, LockMode.UPGRADE);
        oracle.sql.CLOB clob = (oracle.sql.CLOB) ((SerializableClob)article.getContent1()).getWrappedClob();       
        java.io.Writer pw = clob.getCharacterOutputStream();
        pw.write(content);
        pw.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch(IOException ex){
            ex.printStackTrace();
        }

     //读取
     ........................
    MessageArticle article = (MessageArticle)getHibernateTemplate().load(MessageArticle.class, articleid, LockMode.UPGRADE);
            Clob clob = article.getContent1();
            if (clob != null) {
                String content = clob.getSubString(1, (int) clob.length());
                article.setContent(content);
            }

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值