【JPA】映射
【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】映射的更多相关文章
- JPA学习---第五节:日期和枚举等字段类型的JPA映射
1.在上一节可在数据库中看到创建出来的表和字段,是通过 Entity bean 来创建的,而创建表名和字段名的规则是怎样的? 有类,代码如下: package learn.jpa.bean; impo ...
- JPA 映射单向多对一的关联关系
1.首先在多的一端加入一的一端的实体类 //映射单向n-1的关联关 //使用@ManyToOne 来映射多对一的关系 //使用@JoinColumn 来映射外键/可以使用@ManyToOne的fetc ...
- JPA映射持久化对象(Entity)
推荐阅读:JPA criteria 查询:类型安全与面向对象 来源: http://blog.sina.com.cn/s/blog_49fd52cf0100rzjn.html 一个普通的POJO类通过 ...
- 通过JPA注解映射视图的实体类 jpa 视图 无主键 @Query注解的用法(Spring Data JPA) jpa 使用sql语句
参考: https://blog.csdn.net/qq465235530/article/details/68064074 https://www.cnblogs.com/zj0208/p/6008 ...
- JPA 简单实体映射和EntityManagerAPI
[常用注解] 使用JPA 指定映射关系时,有两种方式,一种是使用xml 方式,另一种是注解方式,笔者推荐使用注解方式.在JPA 映射简单实体时,常用的注解如下: @Entity:修饰实体类对象,表示该 ...
- jpa和hibernate注解
http://www.objectdb.com/api/java/jpa/JoinColumns 用hibernate和jpa annotation 大概一年多了,今天闲来无事,对他们关联关系元数据写 ...
- JPA基础
目录 目录 1 一.JPA基础 2 1.1 JPA基础 2 1.2JPA开发过程 3 1.3 实体的生命周期及实体管理器常用方法 4 二.环境搭建 5 2.1 添加JPA支持 6 2.2 添加配置文件 ...
- JPA学习笔记
一.JPA基础1.1 JPA基础JPA: java persistence api 支持XML.JDK5.0注解俩种元数据的形式,是SUN公司引入的JPA ORM规范 元数据:对象和表之间的映射关系 ...
- IDEA Generate pojo(data first)基于 spring data jpa - code
基于 idea 的 pojo生成 右侧菜单栏 Database->New( + 图标)->Data source-> mysql(根据自己的数据源选择) 使用: 代码如下: POJO ...
- 学习Spring-Data-Jpa(二)---JPA基本注解
基本注解 1.@Entity :用于添加在实体类上,定义该JAVA类成为被JPA管理的实体,将映射到指定的数据库表.如定义一个实体类Category,它将映射到数据库中的category表中. 2.@ ...
随机推荐
- 高质量App的架构设计与思考!
最近在做一功能不大.业务也不复杂的小众App,以往做App是发现自己从来没有考虑过一些架构方面的问题,只是按照自己以往的习惯去写代码,忽略了App的设计.本次分享主要包含一些开发App的小经验和技巧, ...
- 领扣(LeetCode)二维区域和检索 个人题解
给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2). 上图子矩阵左上角 (row1, col1) = (2, 1) ,右 ...
- FB力挺的Pytorch深度学习 书本来了
获得 fb首席科学家力挺的 pytorch教程 发布啦, 看截图 
目录 1.Spring的概述 2.Spring的入门(IOC) 3.Spring的工厂类 4.Spring的配置 5.Spring的属性注入 6.Spring的分模块开发的配置 @ 1.Spring的 ...
- 反汇编分析objc函数枢纽objc_msgSend
在分析objc_msgSend之前,先来搞清楚另一个问题. 函数是什么?可能会答 void foo(void) {} 像这样就是一个函数.或者函数包括函数原型和函数定义,是一段执行某样功能的机器代码. ...
- vim-plug 安装 jedi-vim
安装: Plug 'davidhalter/jedi-vim' :PlugInstall 我就在配置文件里写了一个配置项 let g:jedi#use_tabs_not_buffers = 1 进入定 ...
- Java 数据持久化系列之JDBC
前段时间小冰在工作中遇到了一系列关于数据持久化的问题,在排查问题时发现自己对 Java 后端的数据持久化框架的原理都不太了解,只有不断试错,因此走了很多弯路.于是下定决心,集中精力学习了持久化相关框架 ...
- PL真有意思(八):其它程序设计模型
前言 在之前几篇我们讨论的语法.语义.命名.类型和抽象适用于所有语言.然而我们的注意力都主要集中在命令式语言上,现在这篇来看看其它范式的语言.函数式和逻辑式语言是最主要的非命令式语言. 函数式语言 命 ...
- Lab4\5:进程和线程
进程的定义 进程是指一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程 源代码在经过编译链接之后生成了可执行文件,再由操作系统进行加载并且进行一些堆栈的分配才是进程 进程控制块 操作系统管理 ...
- SpringIoc以及set注入八种基本类型的简单实现
SpringIoc以及set注入八种基本类型的简单实现 主要涉及到的技术以及API 反射.xml定义和解析.树模型 反射可以在代码运行状态下动态的创建对象以及调用方法. API:Dom4j.Class ...