【JPA】映射

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

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;

【JPA】映射的更多相关文章

  1. JPA学习---第五节:日期和枚举等字段类型的JPA映射

    1.在上一节可在数据库中看到创建出来的表和字段,是通过 Entity bean 来创建的,而创建表名和字段名的规则是怎样的? 有类,代码如下: package learn.jpa.bean; impo ...

  2. JPA 映射单向多对一的关联关系

    1.首先在多的一端加入一的一端的实体类 //映射单向n-1的关联关 //使用@ManyToOne 来映射多对一的关系 //使用@JoinColumn 来映射外键/可以使用@ManyToOne的fetc ...

  3. JPA映射持久化对象(Entity)

    推荐阅读:JPA criteria 查询:类型安全与面向对象 来源: http://blog.sina.com.cn/s/blog_49fd52cf0100rzjn.html 一个普通的POJO类通过 ...

  4. 通过JPA注解映射视图的实体类 jpa 视图 无主键 @Query注解的用法(Spring Data JPA) jpa 使用sql语句

    参考: https://blog.csdn.net/qq465235530/article/details/68064074 https://www.cnblogs.com/zj0208/p/6008 ...

  5. JPA 简单实体映射和EntityManagerAPI

    [常用注解] 使用JPA 指定映射关系时,有两种方式,一种是使用xml 方式,另一种是注解方式,笔者推荐使用注解方式.在JPA 映射简单实体时,常用的注解如下: @Entity:修饰实体类对象,表示该 ...

  6. jpa和hibernate注解

    http://www.objectdb.com/api/java/jpa/JoinColumns 用hibernate和jpa annotation 大概一年多了,今天闲来无事,对他们关联关系元数据写 ...

  7. JPA基础

    目录 目录 1 一.JPA基础 2 1.1 JPA基础 2 1.2JPA开发过程 3 1.3 实体的生命周期及实体管理器常用方法 4 二.环境搭建 5 2.1 添加JPA支持 6 2.2 添加配置文件 ...

  8. JPA学习笔记

    一.JPA基础1.1 JPA基础JPA: java persistence api 支持XML.JDK5.0注解俩种元数据的形式,是SUN公司引入的JPA ORM规范 元数据:对象和表之间的映射关系 ...

  9. IDEA Generate pojo(data first)基于 spring data jpa - code

    基于 idea 的 pojo生成 右侧菜单栏 Database->New( + 图标)->Data source-> mysql(根据自己的数据源选择) 使用: 代码如下: POJO ...

  10. 学习Spring-Data-Jpa(二)---JPA基本注解

    基本注解 1.@Entity :用于添加在实体类上,定义该JAVA类成为被JPA管理的实体,将映射到指定的数据库表.如定义一个实体类Category,它将映射到数据库中的category表中. 2.@ ...

随机推荐

  1. 力扣(LeetCode)学生出勤记录I 个人题解

    给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符: 'A' : Absent,缺勤 'L' : Late,迟到 'P' : Present,到场 如果一个学生的出勤记录中不超过一个' ...

  2. C语言1博客作业01

    1 你对软件工程专业或者计算机科学与技术专业了解是怎样? 主修大数据技术导论.数据采集与处理实践(Python).Web前/后端开发.统计与数据分析.机器学习.高级数据库系统.数据可视化.云计算技术. ...

  3. App稳定性测试Monkey

    1.$ adb shell monkey <event-count>                <event-count>是随机发送事件数 例:adb shell monk ...

  4. java.lang.NoSuchMethodError: org.apache.tomcat.JarScanner.scan(Ljavax/servlet/ServletContext;Ljava/lang/ClassLoader;Lorg/apache/tomcat/JarScannerCallback;Ljava/util/Set;)V

    java.lang.NoSuchMethodError: org.apache.tomcat.JarScanner.scan(Ljavax/servlet/ServletContext;Ljava/l ...

  5. web前端面试题总结(html、css)

    1.对 WEB 标准以及 W3C 的理解与认识? 参考: 标签闭合.标签小写.不乱嵌套.提高搜索机器人搜索几率.使用外 链 css 和 js 脚本. 结构行为表现的分离.文件下载与页面速度更快.内容能 ...

  6. selenium中延时等待三种方式

    selenium中的延时等待方式有三种:强制等待:sleep()  隐示等待:implicitly_wait()  显示等待 WebDriverWait() 1.强制等待:sleep(),time模块 ...

  7. SQL SERVER中SELECT和SET赋值相同点与不同点

    SELECT和SET在SQL SERVER中都可以用来对变量进行赋值,但其用法和效果在一些细节上有些不同. 1. 在对变量赋值方面,SET是ANSI标准的赋值方式,SELECT则不是.这也是SET方式 ...

  8. 解密面试中的套路,你都get到了么?

    如果大家有关注一些测试类的公众号或者论坛的话,肯定会发现很多文章都在表示现在行业的寒冬冷潮来了!然后有很多测试行业从业者,或者转行测试行业者都表示:工作好难找,公司跑了千千万,依然拿不到一个offer ...

  9. 2019牛客暑期多校训练营(第九场) E All men are brothers

    传送门 知识点:并查集+组合数学 并查集合并操作可以理解为使得两个集合的人互相成为朋友,也就是两个集合并在了一起,答案是要求从所有人中挑出四个互相不是朋友的四个人,比较基础的组合数学知识,但因为每个集 ...

  10. 【Android - IPC】之ContentProvider简介

    1.Content Provider简介 Content Provider是Android中提供的一种专门用于不同应用之间进行数据共享的方式,从这一点来看,它天生就适合IPC(Inter-Proces ...