博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【JPA】映射
阅读量:5131 次
发布时间:2019-06-13

本文共 2073 字,大约阅读时间需要 6 分钟。

【JPA】映射

转载:

 

1、@Entity注解

指定实体类

2、@Id注解

指定实体主键

3、@Table注解

指定表名,@Table(name="employee")
指定架构,@Table(name="employee", schema="HR")
指定目录,@Table(name="employee", catalog="HR")

4、@Column注解

列映射
@Column(name="phone")

5、@Basic(fetch=FetchType.LAZY)注解

延时加载

6、@Lob注解

大型对象
CLOB大型的字符序列char[]、Character[]和String
BLOB大型的字节序列byte[]、Byte[]和Serializable

7、@Lob注解

private byte[] picture

8、@Enumerated注解

枚举类型

package cn.ycx.constant;public enum Sex {    MALE,    FEMALEL}

数据库定义为整数类型,将序号存到数据库字段

private Sex sex;

如果给现有的枚举类型中插入新值,会导致原来的序号错误,无法使用。

一个好的解决方案是将值的名称存储为字符串,以代替序号存储,把数据库定义为字符类型,将值的名称存储到数据库字段。

@Enumerated(EnumType.STRING)private Sex sex;

9、时间类型

 @Temporal注解指定JDBC类型,有三个枚举类型DATE、TIME、TIMESTAMP

@Temporal(TemporalType.DATE)@Column(name="start_date")private Date startDate;@Temporal(TemporalType.TIME)@Column(name="start_time")private Date startTime;@Temporal(TemporalType.TIMESTAMP)@Column(name="start_timestamp")private Date startTimestamp;

 10、标识符生成

使用数据库表

生成标识符的最灵活和可移植的方式是使用一个数据库表。

ID生成表应该有两列,第一列是字符类型,用来表示特定的生成器序列。第二列是整数类型,用来表示第一列对应的生成器值。

示例

@TableGenerator(name="employee",table="id_generator",pkColumnName="name",valueColumnName="value",initialValue=10,allocationSize=5)@Id @GeneratedValue(strategy=GenerationType.TABLE,generator="employee")private int id;

@TableGenerator 表生成

name:全局生成器名称
table:数据库表名称
pkColumnName:生成器的列的名称
valueColumnName::生成器的值列的名称
initialValue:表示最后分配的标识符,可作为生成器定义的一部分进行指定,但是默认设置成0将足以满足几乎每种情况。此设置仅仅在创建表的架构生成期间使用。在随后的执行中,程序将读取值列的内容以确定下一个生成的标识符。
allocationSize:表示分配大小,为了避免每次请求标识符时都更新行,所以预先分配一批标识符,然后请求时从内存中生成标识符,直到这批标识符用完。下一个对标识符的请求将触发预先分配另一批标识符,同时标识符值根据分配大小递增。

@GeneratedValue

strategy:指定策略为表生成
generator:引用生成器名称

使用数据库序列

不关心特定序列,仅仅指定生成器的类型就足够了,没有命名任何生成器,因此提供程序将使用他自己选择的一个默认序列对象。

@Id @GeneratedValue(strategy=GenerationType.SEQUENCE)private int id;

指定命名序列,注意序列要创建好。

@SequenceGenerator(name="employee",sequenceName="employee")@Id @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="employee")private int id;

使用数据库标识

当底层数据库支持主键标识才可以。

@Id @GeneratedValue(strategy=GenerationType.IDENTITY)private int id;

 

转载于:https://www.cnblogs.com/yangchongxing/p/10120447.html

你可能感兴趣的文章
移动设备显示尺寸大全 CSS3媒体查询
查看>>
图片等比例缩放及图片上下剧中
查看>>
【转载】Linux screen 命令详解
查看>>
background-clip,background-origin
查看>>
Android 高级UI设计笔记12:ImageSwitcher图片切换器
查看>>
【Linux】ping命令详解
查看>>
对团队成员公开感谢博客
查看>>
java学习第三天
查看>>
python目录
查看>>
django+uwsgi+nginx+sqlite3部署+screen
查看>>
Andriod小型管理系统(Activity,SQLite库操作,ListView操作)(源代码下载)
查看>>
在Server上得到数据组装成HTML后导出到Excel。两种方法。
查看>>
浅谈项目需求变更管理
查看>>
经典算法系列一-快速排序
查看>>
设置java web工程中默认访问首页的几种方式
查看>>
ASP.NET MVC 拓展ViewResult实现word文档下载
查看>>
8、RDD持久化
查看>>
第二次团队冲刺--2
查看>>
VMware Tools安装
查看>>
Linux上架设boost的安装及配置过程
查看>>