JPA @Id 和 @GeneratedValue @Table注解说明

@Id 标注用于声明一个实体类的属性映射为数据库的主键列。该属性通常置于属性声明语句之前,可与声明语句同行,也可写在单独行上。
@GeneratedValue:
一般mysql数据库自增主键@GeneratedValue(strategy = GenerationType.IDENTITY)
(1)、@GeneratedValue注解存在的意义主要就是为一个实体生成一个唯一标识的主键、@GeneratedValue提供了主键的生成策略。

(2)、@GeneratedValue注解有两个属性,分别是strategy和generator,
generator属性:

generator属性的值是一个字符串,默认为"",其声明了主键生成器的名称
(对应于同名的主键生成器@SequenceGenerator和@TableGenerator)。

strategy属性:提供四种值:

-AUTO主键由程序控制, 是默认选项 ,不设置就是这个
 
-IDENTITY 主键由数据库生成, 采用数据库自增长, Oracle不支持这种方式
 
-SEQUENCE 通过数据库的序列产生主键, MYSQL  不支持
 
-Table 提供特定的数据库产生主键, 该方式更有利于数据库的移植

注意:默认的@GeneratedValue 是不需要加参数的,但是如果数据库控制主键自增(auto_increment), 不加参数就会报错
@GeneratedValue(strategy = GenerationType.IDENTITY)如果mybatis使用InsertOrUpdate的
ON DUPLICATE KEY UPDATE 时候要在对应的实体类上加上这个注解

@Table注解表明实体类对应的数据库表
这几个注解都在 javax.persistence包里面

你可能感兴趣的:(java-基础)