`
zengbo0710
  • 浏览: 414407 次
社区版块
存档分类
最新评论

用Hibernate操作Oracle Blob

阅读更多
1.在HBM里对应CLOB型的字段为:java.sql.Clob,用MyEclipse DataExplorer生成后手动改一下即可,当然POJO也一样啊,如:
HBM:
<
hibernate-mapping> 
<class name="com.chinacars.filterdata.beans.TblWapNews2" table="TBL_WAP_NEWS2">
        
<id name="id" type="java.lang.Long">
            
<column name="ID" precision="22" scale="0" />
        
</id>
      
<property name="content" type="java.sql.Clob">
            
<column name="CONTENT" />
        
</property>

</class>
</hibernate-mapping>
POJO:
import java.sql.Clob;
public class test {
   
private Clob content;
   
}

2.首先要给Clob里写一个值,如:注意看一下有底色的地方就明白了吧
package com.chinacars.filterdata.modidata;

import java.lang.reflect.InvocationTargetException;
import java.sql.Clob;
import java.sql.SQLException;
import java.util.List;

import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Hibernate;

import com.chinacars.filterdata.beans.TblWapNews1;
import com.chinacars.filterdata.beans.TblWapNews2;
import com.chinacars.filterdata.dao.WapNews1DAO;
import com.chinacars.filterdata.dao.WapNews2DAO;
import com.chinacars.filterdata.util.StringProcess;

public class ModiData2 {
    
private static final Log logger = LogFactory.getLog(ModiData2.class);

    
public static void main(String[] args) {

        WapNews1DAO wapNews1DAO 
= new WapNews1DAO();
        WapNews2DAO wapNews2DAO 
= new WapNews2DAO();

        TblWapNews1 news1 
= new TblWapNews1();
        TblWapNews2 news2 
= new TblWapNews2();

        List list 
= wapNews1DAO.getWapNews();
        Clob contentClob 
= null;
        String cStr 
= "1";
        String title;
        
        
for (int i = 0; i < list.size(); i++{
            logger.info(
"============The number : " + i);
            news1 
= (TblWapNews1) list.get(i);
            contentClob 
= news1.getContent();
            
try {
                PropertyUtils.copyProperties(news2, news1);
            }
 catch (IllegalAccessException e) {
                logger.error(e);
                e.printStackTrace();
            }
 catch (InvocationTargetException e) {
                logger.error(e);
                e.printStackTrace();
            }
 catch (NoSuchMethodException e) {
                logger.error(e);
                e.printStackTrace();
            }

            title 
= news1.getTitle();
            
if(title != null{
                title 
= title.replaceAll("""");
                news2.setTitle(title);
            }

            news2.setContent(Hibernate.createClob(cStr));
            
try {
                wapNews2DAO.saveWapNews(news2, StringProcess
                        .delInvalidChar(contentClob.getSubString(
1,
                                (
int) contentClob.length())));
                
            }
 catch (SQLException e) {
                logger.error(e);
                e.printStackTrace();
            }

        }


    }


}

3.开始写入这内容,最主要的是这里,我在这里卡了好久……
   主是下面红色的部分,其它的有色部分都能搜到:看下面的代码吧:^_^
package com.chinacars.filterdata.dao;

import java.io.Writer;
import java.sql.Clob;

import oracle.sql.CLOB;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.lob.SerializableClob;

import com.chinacars.filterdata.beans.TblWapNews2;

public class WapNews2DAO {
    
    
private static final Log logger = LogFactory.getLog(WapNews2DAO.class);

    
private Session oraSession;

    
private Transaction tx;

    
public boolean saveWapNews(TblWapNews2 news, String content) {
        
try {
            oraSession 
= SessionFactory.currentORASession();
            tx 
= oraSession.beginTransaction();
            oraSession.save(news);
            oraSession.flush();
            oraSession.refresh(news, LockMode.UPGRADE);
            
            SerializableClob clob 
= (SerializableClob) news.getContent();
            Clob jClob 
= clob.getWrappedClob();
            CLOB oClob 
= (CLOB)jClob;
            Writer wt 
= oClob.getCharacterOutputStream();            
            
//byte[] bData = content.getBytes();
            wt.write(content);
            wt.close();
            oraSession.flush();
            tx.commit();
            logger.info(
"===================  INSERT OK ");
        }
 catch (Exception e) {
            
if (tx != null)
                tx.rollback();
            logger.info(
"===================  NOT INSERT ");
            logger.info(e);
            e.printStackTrace();
        }
 finally {
            oraSession.close();
        }

        
return true;
    }


}


哈哈,就写到这里了,快没车了……
有不懂的朋友,发e-mail吧!
erdosqiao@163.com


分享到:
评论

相关推荐

    使用hibernate对oracle读取blob

    综上所述,使用Hibernate和JDBC读取Oracle数据库中的Blob数据涉及多个步骤,包括实体类的设计、数据库操作和文件流的处理。理解这些知识点对于处理大对象存储至关重要。在实际项目中,根据需求和性能考虑,选择合适...

    JDBC+Hibernate将Blob数据写入Oracle

    在Oracle数据库中,BLOB类型的字段具有特殊的处理方式,尤其在使用JDBC(Java Database Connectivity)和Hibernate框架时,需要特别注意其写入过程。以下是对“JDBC+Hibernate将Blob数据写入Oracle”这一主题的深入...

    使用JDBC和Hibernate来写入Blob型数据到Oracle中

    如果使用Hibernate,操作Blob会更加简洁,因为Hibernate提供了对Blob对象的直接映射。你需要在实体类中定义一个Blob类型的属性,并在映射文件中配置它。然后,你可以直接将文件流写入这个属性,Hibernate会自动处理...

    Struts2 Hibernate存取Oracle数据库中的BLOB数据.pdf

    在实际操作中,可以通过Hibernate实现Oracle数据库中BLOB数据的存储和删除操作,然后利用Struts2框架展示这些BLOB数据。这样的结合,不仅可以提高开发效率,还能保证应用的性能和稳定性。 ### 实际操作步骤 在实际...

    Hibernate对BLOB CLOB操作

    同时,确保数据库支持高效的BLOB和CLOB操作,比如Oracle的BFILE类型或使用流式处理。 总之,Hibernate提供了对BLOB和CLOB的便利支持,允许开发者在Java应用中轻松地处理大数据对象,从而实现与数据库的高效交互。...

    Hibernate操作Oarcle中Clob、Blob字段小结

    这篇博客文章“Hibernate操作Oracle中Clob、Blob字段小结”可能会探讨如何在Hibernate中有效地处理这两种类型的数据。 1. **Clob与Blob的理解**: - Clob:Clob是用于存储大量字符数据的类型,例如长篇文章、XML...

    hibernate对Blob类型字段进行数据添加.txt

    本文档将详细介绍如何使用 Hibernate 对 Blob 类型字段进行数据添加的过程,并通过实际代码示例来展示具体的操作步骤。 #### Hibernate Blob 数据处理原理 在 Hibernate 中,Blob 类型的字段通常被映射为 `java....

    Hibernate读取blob字段

    本篇文章将深入探讨如何使用Hibernate读取数据库中的Blob字段,以及涉及到的相关知识点。 首先,我们需要理解Blob类型在数据库中的含义。Blob是Binary Large Object的缩写,它是一种可以存储大量二进制数据的数据...

    spring+hibernate操作oracle的clob字段

    Spring和Hibernate框架结合使用可以有效地进行CLOB字段的操作。以下是实现这一功能的关键步骤和注意事项: 1. **配置SessionFactory** 在Spring配置文件中,你需要创建一个`SessionFactory` bean,同时指定一个`...

    oracle+hibernate 处理blob +uploadify实例

    在本示例中,我们将探讨如何使用Oracle数据库、Hibernate ORM框架以及Uploadify插件处理Blob类型的大数据,如图片或文件上传。Blob(Binary Large Object)是数据库中用于存储二进制大对象的类型,常用于存储图片、...

    Hibernate-Oracle-MySQL-image.rar_oracle

    这篇文档“Hibernate-Oracle-MySQL-image.rar_oracle”聚焦于使用Hibernate处理Oracle和MySQL数据库中的二进制大对象(Blob),特别关注如何存储和检索图片文件。Blob类型常用于存储大型数据,如图像、音频或视频...

    jdbc+hibernate存取blob字段

    本篇将详细介绍如何使用JDBC(Java Database Connectivity)与Hibernate框架来操作Oracle数据库中的BLOB字段。 首先,Oracle数据库的BLOB字段提供了对大对象的高效存储,它的性能优于LONG字段,尤其适合存储大容量...

    hibernate向oracle插入图片

    通过使用Hibernate,我们可以避免编写大量的SQL语句,而是用面向对象的方式来操作数据库,提高了开发效率。 【二】Oracle数据库存储图片 Oracle数据库支持BLOB(Binary Large Object)类型,用于存储大容量的二进制...

    关于在Hibernate中对于Clob,Blob字段的处理方法

    2. 配置Hibernate的JDBC连接,使用支持Clob和Blob高效操作的Oracle JDBC驱动。 3. 利用Hibernate提供的API进行增删改查操作,无需手动处理Clob和Blob的具体存储细节。 在实际开发中,了解并掌握这些知识点可以帮助...

    oracle,weblogic读写blob

    Oracle 和 WebLogic 服务器在处理 ...综上所述,Oracle 和 WebLogic 在处理 BLOB 数据时涉及到数据库操作、JDBC 交互、前端数据处理和安全性等多个方面,需要开发者具备全面的技能和经验才能有效地管理和优化这些操作。

    hibernate保存blob,clob对象

    总结,Hibernate通过`@Lob`注解支持BLOB和CLOB的持久化,开发者需要适当地将数据转换为对应的对象类型,然后使用Hibernate的CRUD操作进行保存和检索。同时,要注意性能优化,如懒加载和数据库特定的最佳实践。

    Spring+Hibernate处理Oracle lob字段(一)

    在本文中,我们将深入探讨如何在Java环境下,利用Spring和Hibernate框架处理Oracle数据库中的LOB(Large Object)字段。LOB字段通常用于存储大体积的数据,如文本、图片或视频。在实际开发中,处理这类数据时可能会...

    Spring,SpringMVC,Hibernate,Oracle知识汇总

    在Java开发中,通常通过JDBC驱动与Oracle进行交互,或者利用Hibernate等ORM框架进行更高级别的操作。 这四个技术的结合,通常被称为“SSM”或“SSH”(Spring、SpringMVC、Hibernate的缩写,Oracle有时不被包含在内...

Global site tag (gtag.js) - Google Analytics