您的位置:首页 > 大数据

JPA学习---第六节:大数据字段映射与字段延迟加载

2014-11-07 20:38 288 查看
1、大数据字段所需的注解 @Lob ,例如:

@Lob
private String info;

在mysql中映射产生的字段的类型是longtext;在oracle中是 CLOB

@Lob
private Byte[] bytes;

mysql中对应longblob;oracle中不能使用byte[]字段加@Lob的方式直接映射

2、大数据字段最好是延迟加载,字段延迟加载时时,如果没有访问字段所对应的属性方法(getXX())时,就不会将大数据字段中的数据加载到内存当中,这样可以节约内存。延迟加载注解:

@Basic(fetch=FetchType.LAZY)
private Byte[] bytes;

代码如下:

package learn.jpa.bean;

import java.util.Date;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

@Entity
@Table(name="t_person")
public class Person {

@Id                //@Id用于标记属性的主键
@GeneratedValue
private Integer id;
@Column(length=64,name="personName",nullable=false)
private String name;
// TemporalType.DATE 表示日期格式 例:2014-10-01
// TemporalType.TIME 表示时间格式  例:12:21:34
// TemporalType.TIMESTAMP 表示日期加时间格式  例:2014-10-01 12:21:34
@Temporal(TemporalType.DATE)
private Date brithday;
// @Enumerated 注解枚举型
// EnumType.STRING 表示保存到数据库的值是 MAN or WOMEN
// EnumType.ORDINAL 表示保存到数据库的值是 MAN 和 WOMEN 所设置的索引值
@Enumerated(EnumType.STRING)
@Column(length=5, nullable=false)
private Gender gender;
// @Lob 字段需要存放大的文本数据
@Lob
private String info;
// 存放二进制数据
// FetchType.LAZY 表示延迟加载  当不访问字段所对应的属性方法时,就不会从数据库中获取数据装载到内存中
// FetchType.EAGER 表示立刻加载
@Basic(fetch=FetchType.LAZY)
@Lob
private Byte[] bytes;
// @Transient 说明 imagepath 字段所对应的属性不作为持久化字段,
// 也就是说不和数据库中的某个字段关系映射
@Transient
private String imagepath;

public Person(){}

public Person(String name){
this.name = name;
}

public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

public Date getBrithday() {
return brithday;
}

public void setBrithday(Date brithday) {
this.brithday = brithday;
}

public Gender getGender() {
return gender;
}

public void setGender(Gender gender) {
this.gender = gender;
}

public String getInfo() {
return info;
}

public void setInfo(String info) {
this.info = info;
}

public Byte[] getBytes() {
return bytes;
}

public void setBytes(Byte[] bytes) {
this.bytes = bytes;
}

public String getImagepath() {
return imagepath;
}

public void setImagepath(String imagepath) {
this.imagepath = imagepath;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: