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; } }