JPA实体的常用注解
@Entity
标注于实体类上,通常和@Table是结合使用的,代表是该类是实体类
@Table
标注于实体类上,表示该类映射到数据库中的表,没有指定名称的话就表示与数据库中表名为该类的简单类名的表名相对应,如果是逆向生成表的话就会以简单类名作为表名
如果指定名称,例如@Table(name="tb_user"),就表示映射到数据库中的tb_userz这个表;
@Id
标注于属性上,通常是在get方法上,也可以在属性的声明上。
用于表示该属性作为ID主键
@GeneratedValue
主键生成策略,@GeneratedValue(strategy=GenerationType.AUTO)表示主键自增长由实现jpa的框架来控制,例如我们用hibernate实现的就是有hibernate来控制
GenerationType总共有四个:
AUTO:
TABLE:由一个表来维护主键,这个表记录上一次生成的主键,然后+1给作为新的主键,这种方式效率比较低
SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列
IDENTITY:主键增长有数据来维护,可能不同数据库有不同的策略
@Column
标注于属性上,有很多功能,例如指定长度、是否为空,列名以及对应到数据库汇中的类型等,如@Column(length,nullable,name)
例如,我们string对应到数据库中的text就可以这样写,@Column(columnDefinition="text")
@Temporal
指定时间类型,例如,@Temporal(TemporalType.Date)
@Enumerated(EmumType.STRING) 注解指定枚举类型
其中,EmumTypes表示保存到数据库中是索引还是字符串
@Lob声明属性对应的数据库字段为大文本类型,可以存放大的数据(文本和字节)
@Transient不成为持久化字段及不跟数据库中的字段形成映射
@Basic(fetch=FetchType.LAZY)
是否把数据装载到内存中延迟初始化,第一次访问的时候在加载数据,一般用在大数据存放
@Embeddable指定联合组键 和@EmbeddedId结合使用
===================================================================
以上是针对实体的注解,接下来时针对实体与实体之间关联的注解:
一对多
一般是在多的一般维护关系,也就是多的一方作为关系维护端,负责维护外键,而一的一方是不能操作外键的;
@oneToMany(cascade={CascadeType.*},fetch=FetchType.*,mappedBy="")
默认的FetchType.Lazy
mappedBy就是指关系被维护端;
多对一
@ManyToOne(cascade.CascadeType.*,optional=true|false)
@JoinColum(name="")--》维护关系(外键)
一般定义级联保存、级联查询
默认为立即加载!
optional可选?也就是是否必须存在,false就是不允许为空。
一对一
@OneToOne(mapperBy="",cascade={CascadeType.*})
随便一端都可以作为关系维护端
通过mapperBy指定为被维护端
fetch默认为立即加载
外键则在关系维护端定义
多对多
确定维护关系,都是通过中间表,这样两端就都是与中间表形成一对多!
关系被维护端:
@ManyToMany(cascade={CascadeType.*},mapperBy="itself")
关系维护端
@ManyToMany(cascade={CascadeType.*})
@JoinTable(name="",inverseJoinColums=@JoinColum(name=""),joinColum=@JoinColum(name=""))
其中,inverseJoinColums只关系被维护端的外键
joinColum指关系维护端本身的外键
总结
关系被维护端用mapperBy来定义关系
关系维护端用joinColum来指定外键名称,维护外键或者是@JoinTable通过中间表维护关系
*ToOne 默认加载为立即加载
*ToMany 默认加载方式为懒加载
JPA实体的常用注解的更多相关文章
- SpringDataJpa实体类常用注解
最近公司在使用SpringDataJpa时,需要创建实体类,通过实体类来创建数据库表结构,生成数据库表. 下面我们就来看下在创建实体类时一些常用的注解吧!!! 1.实体类常用注解 @Entity 标识 ...
- Java : JPA相关以及常用注解
SpringDataJPA自定义的查询方法 定义规范 And 并且 Or 或 Is,Equals 等于 Between 两者之间 LessThan 小于 LessThanEqual ...
- spring boot JPA中实体类常用注解
spring boot jpa中的注解很多,参数也比较多.没必要全部记住,但是经常查看官方文档也比较麻烦,记录一下一些常用的注解.通过一些具体的例子来帮助记忆. @Entity @Table(name ...
- Hibernate 关于实体映射常用注解
注解 类注解(写在类上面的) @Entity 标明实体类 @Table(name="数据库标明") 生成数据库时的表名由这个决定 @DynamicInsert ...
- JPA实体类中常用的注解
这两天在看黎活明老师的JPA的讲解视频,现在只了解这么多,记录备用. import java.util.Date; import javax.persistence.Basic; import jav ...
- JPA常用注解
JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. JPA由EJB 3.0软件专家 ...
- JPA常用注解(转载)
转自:http://blog.csdn.net/wanghuan203/article/details/8698102 JPA全称Java Persistence API.JPA通过JDK 5.0注解 ...
- JPA实体类注解、springboot测试类、lombok的使用
前提准备: 搭建一个springboot项目,详情请参见其它博客:点击前往 1 引入相关依赖 web.mysql.jpa.lombok <?xml version="1.0" ...
- JPA实体类中的注解
@Entity 标注于实体类上,通常和@Table是结合使用的,代表是该类是实体类@Table 标注于实体类上,表示该类映射到数据库中的表,没有指定名称的话就表示与数据库中表名为该类的简单类名的表名相 ...
随机推荐
- java打包成jar文件
JAR包是Java中所特有一种压缩文档,其实大家就可以把它理解为.zip包.当然也是有区别的,JAR包中有一个META-INF\MANIFEST.MF文件,当你找成JAR包时,它会自动生成.JAR包是 ...
- jsp的语法
JSP指令和脚本元素指令 <%@ 指令%>声明 <%! 声明%>表达式 <%= 表达式%>代码段/脚本段 <% 代码段%>注释 <%-- 注释-- ...
- IEEE754 处理数据变换
public class IEEE754 { /// <summary> /// 将二进制值转ASCII格式十六进制字符串 /// </summary> /// <pa ...
- 【转】C++易混知识点3. New Operator, Operator New, Placement New 实例分析,比较区别
我们知道,C++中引入了New 这个内置符号,很大方便了指针的使用,程序员不必关注与这块堆上新分配的内存是如何来的,如何初始化的,然后如何转换为我们想要的类型指针的.现在,我们重点来分析下这个NEW内 ...
- 关系类型字段 -- Django从入门到精通系列教程
该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...
- VS工程中的Windows.h
才发现这个Windows.h是有些奥秘的,不是随便引用就可以的. 1,C++工程,头文件引用要讲求一定顺序.如果cpp文件先引用a.h,再引用b.h,则后者自动包含a.h.这一点很重要. 2,Wind ...
- grep工具及正则表达式
正则表达式和通配符 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法,那么该工具就可以处理正则表达式的字符串.vim.grep.awk.sed都支持正 ...
- iOS-属性字符串添加下划线、删除线
常用到的属性字符串 ///定义属性字符串NSMutableAttributedString *att = [[NSMutableAttributedString alloc]initWithStrin ...
- ABP WebApi 加载错误
[TypeLoadException:类型'Abp.WebApi.Validation.AbpApiValidationFilter'中的方法'ExecuteActionFilterAsync'从程序 ...
- vue2.0实现前端星星评分功能组件
<template id="pingJia"> <div> <ul> <li :class="{li1:1,bg1:index% ...