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类型数据
相关推荐
hibernate存取oracle的clob
以下是对Oracle Clob在Hibernate中应用的详细总结: 3.1 传统的JDBC方式: 在没有使用ORM框架之前,我们通常直接通过JDBC来处理Clob数据。这涉及到Clob对象的创建、读取和更新操作。创建时,需要调用...
在IT行业中,数据库管理和持久化框架是至关重要的...通过以上内容,你应该对在Hibernate中动态映射Oracle 10g的CLOB类型有了深入理解,这将帮助你在实际项目中有效地处理大文本数据。如有任何疑问,欢迎继续交流探讨。
在J2EE开发中,处理大数据对象(如大文本或二进制数据)时,Oracle数据库的CLOB...通过以上配置和操作,你可以在Spring和Hibernate的环境中顺利地对Oracle数据库的CLOB字段进行读写,满足J2EE应用中的大数据存储需求。
Hibernate也支持直接使用Clob对象进行映射,这意味着在实体类中直接使用Clob类型的字段,然后在Hibernate的映射文件中进行相应的配置。这种方式适合处理大数据量的文本,因为它允许直接与数据库的Clob类型进行交互...
Hibernate存储Clob字段的方式总结涉及了在Java开发中使用Hibernate操作大型文本字段Clob的操作方法。本文主要介绍了两种操作Clob字段的方法,一种是将Clob字段直接映射为String类型,另一种是使用Clob类型进行处理。...
本文将详细介绍如何在Spring与Hibernate框架结合的情况下,有效地处理Oracle 10g数据库中的CLOB字段。 #### 一、环境配置 为了确保项目能够顺利运行,首先需要搭建好开发环境。本示例中使用的环境配置如下: 1. *...
在Oracle数据库中,Hibernate提供了与这些数据类型的交互方式。本篇将详细介绍在Hibernate中如何处理Clob和Blob字段,以及使用特定Oracle JDBC驱动程序的优势。 首先,Hibernate通过`org.hibernate.type`包中的`...
本文将详细介绍如何使用Hibernate和JDBC读取和存储Oracle数据库中的Blob对象。 ### 1. Hibernate Blob操作 在Hibernate中,Blob对象通常与Java的`java.sql.Blob`接口相对应。在实体类中,你可以定义一个Blob类型的...
在Java的持久化框架Hibernate中,处理大数据类型如Oracle数据库中的Clob(Character Large Object)和Blob(Binary Large Object)字段是一项重要的任务。Clob通常用于存储大量的文本数据,而Blob则适用于二进制...
总之,Hibernate提供了对BLOB和CLOB的便利支持,允许开发者在Java应用中轻松地处理大数据对象,从而实现与数据库的高效交互。通过理解这些概念和操作方式,开发者能够更好地管理和存储大型数据。
在Java的持久化框架Hibernate中,处理大数据类型如BLOB(Binary Large Object)和CLOB(Character Large Object)是一项常见的任务。BLOB用于存储二进制数据,如图片、视频或文档,而CLOB则用于存储大文本数据,如...
### Struts2框架介绍 Struts2是一个基于Java语言...同时,对于未来技术选型,Oracle数据库推荐优先考虑使用CLOB和BLOB类型来存储大型数据,因为这些类型比LONG类型拥有更好的特性,例如更大的容量和更好的操作灵活性。
然而,在与数据库交互时,这些数据类型需要与数据库中的相应字段类型进行映射。Hibernate,作为一款流行的Java持久化框架,提供了一种方便的方式来处理这种映射关系,使得我们可以轻松地在Java对象和数据库记录之间...
总之,处理Oracle数据库中的LOB字段需要对Spring、Hibernate以及Oracle JDBC驱动有深入理解。通过合理配置和使用相应的API,我们可以有效地管理大体积数据,实现与数据库的高效交互。在实际项目中,根据具体需求和...
对CLOB和BLOB数据类型的操作是非常重要的,特别是在使用Java数据库连接(JDBC)时。本文将详细介绍JDBC实现对CLOB和BLOB数据类型的操作,包括读取和写入操作。 CLOB数据类型 CLOB数据类型用于存储大型字符数据,如...
- 在DB2或Oracle中,`CLOB`与`BLOB`类型则与数据库自身的`CLOB`和`BLOB`类型相对应。 2. **Java对象与`CLOB`、`BLOB`的映射** - 当在领域模型(Domain)中处理`CLOB`时,通常将其映射为`String`类型,因为`CLOB`...