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 ...
随机推荐
- Python(2.7.6) 异常类的继承关系
BaseException +-- SystemExit +-- KeyboardInterrupt +-- GeneratorExit +-- Exception +-- StopIteration ...
- php学习笔记4--php中的变量作用域
变量作用域:可以简单地理解为变量的可见区域,变量能被访问的范围.如同其他语言,php中也有全局作用域和局部作用域之分,但是不同的是:php中的全局作用域指的是:只能在函数外部使用,而局部作用域指的是: ...
- 一个页面多Table多分页的问题
一个页面有多个table,多个pagination,一个pagerForm.这种情况下怎么解决多个pagination不同pagenum的问题呢? 如果是这样的滴话,使用局部刷新就可以了,两个tabl ...
- Shanghai InfoSys .NET engineer telephone interview
Collect the answers,interested friends from research. 1,Interface and Abstract difference? 2,Generic ...
- shell命令getopts解析
getopts是一条获取和处理命令行选项的语句,格式为getopts option_string variable .其中option_string中包含一个有效的单字符选项,若getopts命令在命 ...
- [转]GCC参数详解
[介绍] gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成 ...
- 20141212--C#对象比较
static void Main(string[] args) { Class2 oo = new Class2(); oo.shu = ; oo.zi = "你"; Class2 ...
- jquery.cookie.js 使用方法
Cookies 定义:让网站服务器把少量数据储存到客户端的硬盘或内存,从客户端的硬盘读取数据的一种技术: 下载与引入:jquery.cookie.js基于jquery:先引入jquery,再引入:jq ...
- unity 3消 游戏
3消游戏跟着智能手机流行到现在已经有很长一段时间,unity实现的3消 https://github.com/textcube/match3action 截图如下: 在阅读源码的时候不难发现,Game ...
- MySQL事务机制
事务机制的特性通常被概括为"ACID原则" A(Atomic) 原子性: 构成一个事务的所有语句应该是一个独立的逻辑单元,要么全部执行成功, 要么一个都不成功, 你不能只执行他们当 ...