一、常⽤ JPA 注解
1、实体
A、@Entity(重点)
a、用于将Java类标记为实体
b、实体是轻量级的持久化域对象。它通常表示关系型数据库中的表,实体的实例对应于该表中的一行
B、@MappedSuperclass
a、将Java类标记为其他实体类的超类
b、在继承关系中,如果一个类被标记为@MappedSuperclass,那么它的属性将被继承到子类中,并且这些属性将被映射到子类对应的表的列。
c、@MappedSuperclass 本身不是实体,无法查询或持久化到数据库中。(重点)
C、@Table(name)(重点)
a、指定实体映射到的表的名称
b、默认情况下,表名与实体名相同,但是可以使用 @Table 注释来指定不同的表名。
2、主键(重点)
A、 @Id
a、 @GeneratedValue(strategy, generator)
a1、用于生成自增
a2、strategy参数指定生成策略;generator参数指定生成器的名称
a3、@GeneratedValue(strategy=GenerationType.AUTO)表示使用默认的自增策略生成
b、@SequenceGenerator(name, sequenceName)
b1、用于指定序列生成器
b2、name参数指定生成器的名称;sequenceName参数指定数据库中序列的名称
b3、@SequenceGenerator(name="seq_gen", sequenceName="SEQ_GEN_ID")表示使用名
为"seq_gen"的生成器来生成名为"SEQ_GEN_ID"的序列值
3、映射
A、@Column(name, nullable, length, insertable, updatable)(重点)
a、将Java类的字段映射到数据库表列
b、name参数用于指定列名,nullable参数用于指定是否允许该列为空,length参数用于指定列的长度,insertable参数用于指定该列是否可以插入,updatable参数用于指定该列是否可以更新
c、@Column(name = "user_name", nullable = false, length = 50, insertable = true, updatable = true)指定将Java类中的"user_name"字段映射到数据库表的"user_name"列,并且该列不允许为空。
B、@JoinTable(name)(重点)
a、描述两个实体类之间的多对多关系
b、参数name,用于指定关联表的名称。
c、@JoinTable(name = "book_author")指定将"book_author"作为关联表的名称来表示Book和
Author之间的多对多关系。
C、@JoinColumn(name)(重点)
a、描述实体之间的单向或双向关联关系
b、参数name,用于指定关联列的名称。
c、@JoinColumn(name = "user_id")指定使用"user_id"列来表示User和Order之间的关联关系。
4、关系(重点)
A、@OneToOne、@OneToMany、@ManyToOne、@ManyToMany
B、@OrderBy(排序)
二、Project Lombok
1、Project Lombok 能够⾃动嵌⼊ IDE 和构建⼯具,提升开发效率
2、常⽤功能
• @Getter / @Setter(重点)
• @ToString(重点)
• @NoArgsConstructor / @RequiredArgsConstructor / @AllArgsConstructor
• @Data(重点)
• @Builder(重点)
• @Slf4j / @CommonsLog / @Log4j2(重点)