(1)ex-1:

一个User实体类中:

1. @Id : 用于声明一个实体类的属性映射为数据库的主键列

2. @GeneratedValue:
一般mysql数据库自增主键会设置为 :  @GeneratedValue(strategy = GenerationType.IDENTITY)

目的是为一个实体赋予一个唯一标识的 主键 , 提供了主键的生成策略。

 

@GeneratedValue 其中有 strategy 和 generator 两个属性:

A. generator属性:其值是一个字符串,默认为"";

B. strategy属性: 

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

3. @Table注解表明实体类对应的数据库表.

(2)ex-2:

 

1. @Entity :注明这是一个实体类,不写默认为类名。

2. 所有的实体类都要有主键:

@Id表示这是主键;

主键自动生成 + 生成策略:

3. @Column: 可以定制属性 对应的 数据表中 字段的名称,nullable表示该字段为空。

4. @Transient : 表示在生成数据库中的表时,该属性被忽略,即不生成对应的字段。

(3)JPA Sql 支持的命名规则-汇总: