通常,可以在数据库中保存诸如图片,长文本类型的数据。这种类型的数据一般是保存成Blob和Clob类型。
这两种类型的数据可以通过使用@Lob属性来标注。例如CustomerEO实体增加了一个属性portrait,用于保存客户的头像图片,增加了一个属性meno,用于保存一些长文本的备注信息。代码如下所示。
@Entity
@Table(name = "customer")
public class CustomerEO implements java.io.Serializable {
……
private byte[] portrait;
@Lob
@Basic(fetch=FetchType.LAZY)
public byte[] getPortrait() {
return portrait;
}
public void setPortrait(byte[] portrait) {
this.portrait = portrait;
}
private String meno;
@Lob
@Basic(fetch=FetchType.LAZY)
public String getMeno() {
return meno;
}
public void setMeno(String meno) {
this.meno = meno;
}
}
其中加粗的部分为对应的字节流属性所对应字段的定义。这样标注实体后,相对应创建表的SQL脚本为以下所示。
CREATE TABLE customer (
id int(20) NOT NULL,
name varchar(255) default NULL,
short_name varchar(255) default NULL,
portrait blob,
meno clob,
PRIMARY KEY (id)
)
在使用@Lob注释注意以下几个问题。
l @Lob适用于标注字段类型为Clob和Blob类型。
l Clob(Character Large Ojects)类型是长字符串类型,映射为实体中的类型可为char[]、Character[]、或者String类型。
l Blob(Binary Large Objects)类型是字节类型,映射为实体中的类型可为byte[]、Byte[]、或者实现了Serializable接口的类。
l 因为这两种类型的数据一般占用的内存空间比较大,所以通常使用惰性加载的方式,所以一般都要与@ Basic标记同时使用,设置加载方式为FetchType.LAZY。
@Basic(fetch=FetchType.LAZY)
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/EJB_JPA/archive/2008/05/09/2422575.aspx
分享到:
相关推荐
在Java的持久化框架Hibernate中,BLOB(Binary Large Object)和CLOB(Character Large Object)是用来处理大数据类型的,如图像、音频、大型文本等。本文将深入探讨Hibernate如何进行BLOB和CLOB的操作,以及相关的...
在数据库迁移或数据同步的过程中,有时需要将含有大对象(LOB,包括BLOB和CLOB)的数据从一个数据库系统复制到另一个不完全支持LOB的数据库系统。本例中,我们讨论如何将DB2数据库中的BLOB数据类型复制到Oracle...
在Java的持久化框架Hibernate中,处理大数据类型如Clob(Character Large Object)和Blob(Binary Large Object)是常见的需求,这些数据类型通常用于存储大量的文本或二进制数据。Oracle数据库提供了支持Clob和Blob...
在JDBC4中,处理LOB对象变得更为直接和高效,主要归功于新增的`java.sql.Blob`和`java.sql.Clob`接口的增强功能。 首先,我们需要在项目中引入JDBC驱动,以便与数据库进行通信。对于不同的数据库,如MySQL、Oracle...
本主题“hibernate动态映射表处理Oracle的CLOB类型”主要聚焦于如何在Hibernate中有效地管理和操作CLOB字段。在Oracle 10g中,CLOB数据类型的处理有时会遇到一些挑战,尤其是在与ORM框架结合使用时。以下将详细介绍...
- Hibernate源码中,`org.hibernate.type`包下的`ClobType`和`BlobType`类实现了对Clob和Blob的类型映射。理解这些类型的实现可以帮助我们更深入地了解数据的存储和处理过程。 6. **工具使用**: - 可能会提到...
1. **Clob类型映射**:在Hibernate的实体类中,我们需要声明一个字段来表示Clob类型的属性,并使用`@Lob`注解进行映射。例如: ```java @Lob private Clob largeText; ``` 2. **Hibernate配置**:在Hibernate的...
`@Lob`注解告诉Hibernate这是一个Blob类型的字段,它会自动处理数据库的映射。 ### 2. JDBC Blob操作 在不使用Hibernate的情况下,可以通过JDBC直接操作Blob。首先,你需要获取到PreparedStatement,然后通过`...
在处理大数据类型如BLOB(Binary Large Object)和CLOB(Character Large Object)时,JPA提供了一种名为Lob的特殊处理方式。本文将深入探讨如何结合jQuery和JPA进行Lob操作。 一、jQuery基础 jQuery的核心是简化...
8. `@Temporal`:用于日期和时间类型的映射,可以是`TemporalType.DATE`、`TemporalType.TIME`或`TemporalType.TIMESTAMP`。例如: ```java @Temporal(TemporalType.TIME) java.util.Date getDepartureTime() { ... ...
- `@Lob`注解用于将属性持久化为Blob或Clob类型。例如: ```java @Lob public String getFullText() { return fullText; } // Clob类型 @Lob public byte[] getFullCode() { return fullCode; } // Blob类型 ...
在Java的持久化框架Hibernate中,处理大数据字段,如文本、图像或者其他大量数据,通常涉及到CLOB(Character Large Object)和BLOB(Binary Large Object)类型。这些类型用于存储数据库中的大文本或二进制数据。...
在本文中,我们将对 Oracle 和 DB2 的数据类型进行分类和对应说明,主要包括数值类型、日期时间类型、字符串类型、LOB 类型和 ROWID 类型等。 一、数值类型 Oracle 中的 NUMBER 类型可以对应 DB2/400 中的多种类型...
在Oracle数据库中,存在多种数据类型用于存储不同类型的数据,其中BLOB和Long Raw都是用于存储大对象(LOB)的类型。然而,由于历史原因,Long Raw在Oracle 9i及之后的版本中已被BLOB和CLOB取代,因为Long Raw有一些...
6. `@Lob`: 表示字段是一个大对象(LOB),通常用于存储大量文本或二进制数据,如BLOB(Binary Large Object)和CLOB(Character Large Object)。 7. `@JoinColumn`: 在一对多或多对一的关系映射中,用于定义外键...
在Java的数据库操作中,`CLOB`和`BLOB`是用于存储大对象(Large Object)的数据类型,分别用于存储字符数据和二进制数据。这篇文章主要讲解了如何使用`JDBC`和`Hibernate`这两种不同的方式来处理`CLOB`和`BLOB`字段...
在Oracle数据库中,LOB字段主要有BLOB(Binary Large Object)和CLOB(Character Large Object)两种类型,分别用于存储二进制和字符数据。处理这些字段时,我们需要配置Hibernate的实体类和映射文件。 在实体类中...
四、ROW和LOB类型 DB2/400提供VARCHAR和CLOB与Oracle中的RAW和LONG RAW相对应。Oracle也支持大对象:BLOB、CLOB、NCLOB等。DB2/400中的BLOB和CLOB只能存放2GB的数据,而Oracle中的BLOB和CLOB可以提供4GB的空间。 ...
`@Lob`注解用于处理大对象,如Blob(二进制大对象)和Clob(字符大对象): ```java @Lob public String getFullText() { return fullText; } // clob type @Lob public byte[] getFullCode() { return fullCode; }...