JPA学习---第六节:大数据字段映射与字段延迟加载
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;
} }
JPA学习---第六节:大数据字段映射与字段延迟加载的更多相关文章
- ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪
ASP.NET MVC深入浅出(被替换) 一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...
- JPA学习(六、JPA_JPQL)
框架学习之JPA(六) JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中 ...
- VUE2.0实现购物车和地址选配功能学习第六节
第六节 地址列表过滤和展开所有的地址 html:<li v-for="(item,index) in filterAddress">js: new Vue({ el:' ...
- Coursera在线学习---第六节.构建机器学习系统
备: High bias(高偏差) 模型会欠拟合 High variance(高方差) 模型会过拟合 正则化参数λ过大造成高偏差,λ过小造成高方差 一.利用训练好的模型做数据预测时,如果效果不好 ...
- JPA学习---第五节:日期和枚举等字段类型的JPA映射
1.在上一节可在数据库中看到创建出来的表和字段,是通过 Entity bean 来创建的,而创建表名和字段名的规则是怎样的? 有类,代码如下: package learn.jpa.bean; impo ...
- JPA学习---第十一节:JPA中的多对多双向关联实体定义与注解设置及操作
1.定义实体类,代码如下: (1).学生实体类: package learn.jpa.entity; import java.util.HashSet; import java.util.Set; i ...
- JPA学习---第十节:JPA中的一对一双向关联
1.创建实体类,代码如下: 代码清单1: package learn.jpa.entity; import javax.persistence.CascadeType; import javax.pe ...
- JPA学习---第七节:使用JPA加载_更新_删除对象
1.添加数据,代码如下: @Test public void save(){ EntityManagerFactory factory = Persistence.createEntityManage ...
- JPA学习---第四节:JPA实例与JPA主键生成策略
1.编写实体类,代码如下: package learn.jpa.bean; import javax.persistence.Entity; import javax.persistence.Gene ...
随机推荐
- sql 计算两时间或日期 的相差的 年、 月、 日、时、分、秒,年、月、日分别的提取
--年.月.日.时.分.秒 datediff(yy,date1,date2) datediff(m,date1,date2) datediff(d,date1,date2) datediff(hh,d ...
- iOS - 使用进阶
1. 状态栏显示风火轮 // ViewController.m // 1.状态栏显示风火轮 // // Created by wind on 16/11/13. // Copyright © ...
- 第一个Cocos2d-x Lua游戏
我们的编写的第一个Cocos2d-x Lua程序,命名为HelloLua,从该工程开始学习其它的内容.创建工程我们创建Cocos2d-x Lua工程可以通过Cocos2d-x提供的命令工具cocos实 ...
- IOS版应用商店应用源码
app商店 swift版 用swift编写的 应用商店 支持iPad iPhone利用了ios8过渡动画 支持横竖屏操作 源码下载: http://code.662p.com/view/11384.h ...
- UIAlertView[警告框] [代理协议型]UIActionSheet [表单视图][代理协议型]
//// ViewController.h// UIAlertViewAndUIActionSheet//// Created by hehe on 15/9/21.// Copyright ...
- C#中数组、ArrayList和List<T>三者的发展历程
在C#中数组,ArrayList,List使我们用的最多的类型之一.他们共同的作用都是能够存储一组对象. 那么问题来了: (1)为什么要有三个一样作用的东西呢?他们都很完美吗? (2)谁先出生,又是因 ...
- VC中调用COM组件的方法(转载)
原文参考:http://hi.baidu.com/mingyueye/item/53ebecd44da76917d80e4449 总结一下在VC中调用COM组件的方法 准备及条件: COM服务器为进程 ...
- (转)RabbitMQ消息队列的小伙伴: ProtoBuf(Google Protocol Buffer)
什么是ProtoBuf? 一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化.它很适合做数据存储或 RPC 数据交换格式.可用于通讯协议.数据存储等领域的语言无关.平台无关.可扩 ...
- Codevs 3231 小吃
时间限制: 1 s 空间限制: 16000 KB 题目等级 : 黄金 Gold 题目描述 Description 这里简直是吃货的天堂,小吃太多了.数不胜数. 假设岛上有N种小吃,每种体积Vi, ...
- C#学习笔记(第1周作业)
受队友诱惑,去听了李强的C#公选课,第二天就完成作业了. 作业要求: 1. 小学生加法程序: 2. 能自由设置难度: 3. 对结果进行统计. 第一次写C#程序,遇到不少困难,和队友讨论,百度谷歌一齐上 ...