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 标注于实体类上,表示该类映射到数据库中的表,没有指定名称的话就表示与数据库中表名为该类的简单类名的表名相 ...
随机推荐
- [Git] git log命令
这是git的新系列,不常用的命令和其参数比较容易记不住,干脆将常用的记录下来,日后查查方便也是好的,一篇文章一个git命令,长短根据命令有所不同. git log命令主要用于查看提交历史,同时根据添加 ...
- java.lang.ClassNotFoundException: com.radiadesign.catalina.session.RedisSessionHandlerValve
org.apache.tomcat.util.digester.Digester.startElement Begin event threw exception java.lang.ClassNot ...
- Python 斐波那契数列练习
# coding=gbk # 迭代法---1 def fibonacci (n): if n == 0 or n == 1: return n else : a = 0 b = 1 for i in ...
- git 安装使用
系统ubuntu14.04 1.安装:sudo apt-get install git 2.设置name and Email: git config --global user.name " ...
- struts 中的addFieldError
addFieldError("字段名","错误信息")给一个字段(属性)添加错误消息 在action中添加 this.addFieldError("p ...
- awk 的 pattern(模式)
我们知道, awk程序由一系列 pattern 以及与之对应的 action 组成的 rule 组成,rule之间用";"分号隔开, 一条输入记录与 pattern 匹配则执行与之 ...
- [Bug] 解决 Sql Server 数据库死锁问题
SELECT request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tableName FROM sys.dm_tra ...
- 初码-Azure系列-存储队列的使用与一个Azure小工具(蓝天助手)
初码Azure系列文章目录 将消息队列技术模型简化,并打造成更适合互联网+与敏捷开发的云服务模式,好像已经是行业趋势,阿里云也在推荐使用消息服务(HTTP协议为主)而来替代消息队列(TCP协议.MQT ...
- 获取sap登陆用户名的中文描述
一.业务场景: 当通过MKPF-USNAM查找ADRP-NAME_LAST时,中间缺少一个表,即USR21.否则,MKPF-USNAM不能和ADRP-PERSNUMBER直接对等. 二.解决方法: D ...
- 机器学习01:使用scikit-learn的线性回归预测Google股票
这是机器学习系列的第一篇文章. 本文将使用Python及scikit-learn的线性回归预测Google的股票走势.请千万别期望这个示例能够让你成为股票高手.下面按逐步介绍如何进行实践. 准备数据 ...