`

Hibernate对与Oracle中Clob类型的使用

阅读更多

Hibernate对与Oracle中Clob类型的使用

 

一.理解和分析:
1.为何实用Clob:
oracle数据库当需要存入大数据量(大于4000)时,varchar2不够用,可以使用clob,本文描述clob怎么和Hibernate一起使用。

 

2.Clob类型的属性的赋值方式——String转Clob

 

String content = request.getParameter("content");//1.从request请求中取值(String类型的)
Clob clob = Hibernate.createClob(content);//2.通过hibernate将string转化为clob
news.setContent(clob);//3.给实体类对应属性赋值

 

 

3.Clob类型的属性的取值方式——Clob转String

 

List<News> list = query.addEntity(News.class).list();//1.从数据库取值
News news = (News)list.get(0);//2.取News对象
String content = ClobUtil.ClobToString(news.getContent());//3.将news对象中的clob类型的content转化为String字符串

 

 

二.实例分析:
1.建表:News新闻表

 

2.创建实体类和映射文件:

 

public class News {
	private Long id;
	private String dir;
	private String fileName;
	private String title;
	private String tag;
	private String imgUrl;
	private Integer type;
	private String creator;
	private Date createDate;
	private String remark;
	private Integer ishot;
	private Clob content;
	......
}

   
 

 

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2014-11-28 9:58:10 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="com.datanew.czfc.frontPage.entity.News" table="NEWS">
        <id name="id" column="ID">
        	<generator class="sequence">
                <param name="sequence">SQ_NEWS</param>
        	</generator>
        </id>
        <property name="dir" type="java.lang.String">
            <column name="DIR" />
        </property>
        <property name="fileName" type="java.lang.String">
            <column name="FILE_NAME" />
        </property>
        <property name="title" type="java.lang.String">
            <column name="TITLE" />
        </property>
        <property name="tag" type="java.lang.String">
            <column name="TAG" />
        </property>
        <property name="imgUrl" type="java.lang.String">
            <column name="IMG_URL" />
        </property>
        <property name="type" type="java.lang.Integer">
            <column name="TYPE" />
        </property>
        <property name="creator" type="java.lang.String">
            <column name="CREATOR" />
        </property>
        <property name="createDate" type="java.util.Date">
            <column name="CREATE_DATE" />
        </property>
        <property name="remark" type="java.lang.String">
            <column name="REMARK" />
        </property>
         <property name="ishot" type="java.lang.Integer">
            <column name="ISHOT" />
        </property>
        <property name="content" type="java.sql.Clob">
            <column name="CONTENT" />
        </property>
    </class>
</hibernate-mapping>

   
 

 

 

3.增加News的Servlet::—— 需要对String数据转化成Clob数据

 

String title = request.getParameter("title");
String tag = request.getParameter("tag");
String content = request.getParameter("content");
String typeStr = request.getParameter("type");
String ishotStr = request.getParameter("ishot");
int type = Integer.valueOf(typeStr);
int ishot = 0;
if("on".equals(ishotStr)){
	ishot = 1;
}
Clob clob = Hibernate.createClob(content);
INewsDao newsDao = new NewsDaoImpl();
News news = new News();
news.setDir(htmlDir + detailDir);
news.setFileName(fileName);
news.setCreateDate(createDate);
news.setCreator(user.getUsername());
news.setTitle(title);
news.setTag(tag);
news.setType(type);
news.setIshot(ishot);
news.setContent(clob);
newsDao.saveNews(news);

注意:要对request获取的字符串用hibernate转化为clob类型

 

 

4.从数据库获取news中的Content:—— 需要对String数据转化成Clob数据

public String getNewsContentById(int id) {
    Session s = null;
    News news = null;
    String content = null;
    try {
        s = HibernateUtil.getSession();
        s.beginTransaction();
        StringBuffer sb = new StringBuffer("select * from news where id = " + id);
        SQLQuery query = s.createSQLQuery(sb.toString());
        news = (News) query.addEntity(News.class).uniqueResult();
        content = ClobUtil.ClobToString(news.getContent());
        s.getTransaction().commit();
    } catch (Exception e) {
        logger.error(e.toString());
        HibernateUtil.endSession(s);
    } finally {
        HibernateUtil.endSession(s);
    }
    return content;
}

注意:要对获取到的实体类中的Clob类型数据转化为String类型

 

5.Clob工具类:

public class ClobUtil {

	public static String ClobToString(Clob clob) {
        String clobStr = "";
        Reader is = null;
        try {
            is = clob.getCharacterStream();
	        // 得到流
	        BufferedReader br = new BufferedReader(is);
	        String s = null;
            s = br.readLine();
	        StringBuffer sb = new StringBuffer();
	        //执行循环将字符串全部取出赋值给StringBuffer,由StringBuffer转成String
	        while (s != null) {
	            sb.append(s);
	            s = br.readLine();
	        }
	        clobStr = sb.toString();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return clobStr;
    }
    
}

 注意:通过流的方式读取Clob类型数据

 

 

  • 大小: 17 KB
  • 大小: 6.6 KB
  • 大小: 5 KB
  • 大小: 4.2 KB
  • 大小: 12.1 KB
分享到:
评论

相关推荐

    hibernate存取oracle的clob

    hibernate存取oracle的clob

    关于Oracle的 Clob数据类型在Hibernate中的应用小结

    以下是对Oracle Clob在Hibernate中应用的详细总结: 3.1 传统的JDBC方式: 在没有使用ORM框架之前,我们通常直接通过JDBC来处理Clob数据。这涉及到Clob对象的创建、读取和更新操作。创建时,需要调用...

    hibernate动态映射表处理oracle的clob类型

    在IT行业中,数据库管理和持久化框架是至关重要的...通过以上内容,你应该对在Hibernate中动态映射Oracle 10g的CLOB类型有了深入理解,这将帮助你在实际项目中有效地处理大文本数据。如有任何疑问,欢迎继续交流探讨。

    spring+hibernate操作oracle的clob字段

    在J2EE开发中,处理大数据对象(如大文本或二进制数据)时,Oracle数据库的CLOB...通过以上配置和操作,你可以在Spring和Hibernate的环境中顺利地对Oracle数据库的CLOB字段进行读写,满足J2EE应用中的大数据存储需求。

    关于Clob类型在Hibernate中 的应用小结

    Hibernate也支持直接使用Clob对象进行映射,这意味着在实体类中直接使用Clob类型的字段,然后在Hibernate的映射文件中进行相应的配置。这种方式适合处理大数据量的文本,因为它允许直接与数据库的Clob类型进行交互...

    Hibernate存储Clob字段的方式总结

    Hibernate存储Clob字段的方式总结涉及了在Java开发中使用Hibernate操作大型文本字段Clob的操作方法。本文主要介绍了两种操作Clob字段的方法,一种是将Clob字段直接映射为String类型,另一种是使用Clob类型进行处理。...

    spring+hibernate 解决大字段(clob)

    本文将详细介绍如何在Spring与Hibernate框架结合的情况下,有效地处理Oracle 10g数据库中的CLOB字段。 #### 一、环境配置 为了确保项目能够顺利运行,首先需要搭建好开发环境。本示例中使用的环境配置如下: 1. *...

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

    在Oracle数据库中,Hibernate提供了与这些数据类型的交互方式。本篇将详细介绍在Hibernate中如何处理Clob和Blob字段,以及使用特定Oracle JDBC驱动程序的优势。 首先,Hibernate通过`org.hibernate.type`包中的`...

    使用hibernate对oracle读取blob

    本文将详细介绍如何使用Hibernate和JDBC读取和存储Oracle数据库中的Blob对象。 ### 1. Hibernate Blob操作 在Hibernate中,Blob对象通常与Java的`java.sql.Blob`接口相对应。在实体类中,你可以定义一个Blob类型的...

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

    在Java的持久化框架Hibernate中,处理大数据类型如Oracle数据库中的Clob(Character Large Object)和Blob(Binary Large Object)字段是一项重要的任务。Clob通常用于存储大量的文本数据,而Blob则适用于二进制...

    Hibernate对BLOB CLOB操作

    总之,Hibernate提供了对BLOB和CLOB的便利支持,允许开发者在Java应用中轻松地处理大数据对象,从而实现与数据库的高效交互。通过理解这些概念和操作方式,开发者能够更好地管理和存储大型数据。

    hibernate保存blob,clob对象

    在Java的持久化框架Hibernate中,处理大数据类型如BLOB(Binary Large Object)和CLOB(Character Large Object)是一项常见的任务。BLOB用于存储二进制数据,如图片、视频或文档,而CLOB则用于存储大文本数据,如...

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

    ### Struts2框架介绍 Struts2是一个基于Java语言...同时,对于未来技术选型,Oracle数据库推荐优先考虑使用CLOB和BLOB类型来存储大型数据,因为这些类型比LONG类型拥有更好的特性,例如更大的容量和更好的操作灵活性。

    Hibernate中数据类型

    然而,在与数据库交互时,这些数据类型需要与数据库中的相应字段类型进行映射。Hibernate,作为一款流行的Java持久化框架,提供了一种方便的方式来处理这种映射关系,使得我们可以轻松地在Java对象和数据库记录之间...

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

    总之,处理Oracle数据库中的LOB字段需要对Spring、Hibernate以及Oracle JDBC驱动有深入理解。通过合理配置和使用相应的API,我们可以有效地管理大体积数据,实现与数据库的高效交互。在实际项目中,根据具体需求和...

    详解jdbc实现对CLOB和BLOB数据类型的操作

    对CLOB和BLOB数据类型的操作是非常重要的,特别是在使用Java数据库连接(JDBC)时。本文将详细介绍JDBC实现对CLOB和BLOB数据类型的操作,包括读取和写入操作。 CLOB数据类型 CLOB数据类型用于存储大型字符数据,如...

    解析使用jdbc,hibernate处理clob/blob字段的详解

    - 在DB2或Oracle中,`CLOB`与`BLOB`类型则与数据库自身的`CLOB`和`BLOB`类型相对应。 2. **Java对象与`CLOB`、`BLOB`的映射** - 当在领域模型(Domain)中处理`CLOB`时,通常将其映射为`String`类型,因为`CLOB`...

Global site tag (gtag.js) - Google Analytics