JPA常用注解

1.@Entity 标识这个pojo是一个实体

2.@Table(name=users)设置表名

3.@Id 设置主键

4.@Column 设置字段类型

  • name : 表中对应的字段名
  • unique : 是否唯一
  • nullable: 是否为空
  • inserttable:是否可以插入
  • updateable:是否可以更新
  • columnDefinition: 定义建表时创建此列的DDL
  • secondaryTable: 从表名。如果此列不建在主表上(默认建在主表),该属性定义该列所在从表的名字
  • precision 设置精度 scale 保留的小数位

5.@OrderBy : 排序

6.@GeneratedValue(strategy=默认值)strategy的取值:

  • GenerationType.AUTO 由JPA容器自动生成

  • GenerationType.IDENTITY 主键自增的方式(依赖于具体的数据库,不支持主键自增,不能够使用)

  • GenerationType.TABLE 通过表来实现主键id自增的方式(不依赖数据库,解决数据迁移的问题)

  • GenerationType.SEQUENCE 通过主键实现主键自增的方式(依赖于具体的数据库,数据库没有 SEQUENCE ,不能够使用)

7.@SequenceGenerator 如果实体表示的生成策略是GenerationType.SEQUENCE ,必须提供该注解, 它的参数描述了使用序列号生成实体标识的具体细节

  • name : 它表示了 SequenceGenerator 注释在 OpenJPA 容器中的唯一名称

8.一对多映射关系:

T_One实体:

@OneToMany(cascade = CascadeType.ALL, mappedBy = “用在被维护端”) 指向多的那方的pojo的关联外键字段

  • cascade 级联操作

  • CascadeType.PERSIST:级联持久化,也就是级联保存。比如一个学生有很多门成绩,保存学生了,那么也就会级联保存各门成绩信息

  • CascadeType.REMOVE:级联删除,删除学生了,那么学生的成绩也从数据库中删除

  • CascadeType.MERGE:级联合并,修改学生成绩信息了,那么修改的成绩信息会保存到数据库中,和上面persist的区别类似于put和post的区别

  • CascadeType.DETACH:级联游离,要想删除某一条学生信息,但学生的id在成绩表中作为外键,无法直接删除

  • CascadeType.REFRESH:级联刷新

  • CascadeType.ALL:上面所有的结合,慎用

T_Many实体:

@JoinColumn(name = “ONE_ID”, referencedColumnName = “ONE_ID”)//设置对应数据表的列名和引用的数据表的列名
@ManyToOne//设置在“一方”pojo的外键字段上

9.多对多映射关系:

ManyA实体:

@ManyToMany
@JoinTable(name = “格式是:主控方_被控方(关系表)”, joinColumns = {@JoinColumn(name = “MANYA_ID(中间表的主键)”, referencedColumnName = “MANYA_ID”)}, inverseJoinColumns = {@JoinColumn(name = “MANYB_ID”, referencedColumnName = “MANYB_ID”)})

  • jointable中name指定表名,然后指定外键,joinColumns是主操作表的中间表列,可以有好几个,而inverseJoinColumns是副操作表的中间表列,也就是student作为主操作表

ManyB实体:

@ManyToMany(mappedBy = “被维护端”)

10.一对一映射关系

A实体:

@OneToOne(cascade = CascadeType.ALL, mappedBy = “oneA”)//主Pojo这方的设置比较简单,只要设置好级联和映射到从Pojo的外键就可以了。

B实体:

@JoinColumn(name = “ONEA_ID”, referencedColumnName = “ONEA_ID”, insertable = false, updatable = false)//设置从方指向主方的关联外键,这个ONEA_ID其实是表T_ONEA的主键
@OneToOne

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值