Jpa spring常出错 源码研究

激活 指定参数切换激活场景 配置不同功能开发 配置 测试环境功能实现

@GeneratedValue自增长值

@GeneratedValue的四种参数

SpringBoot的@GeneratedValue 是不需要加参数的,但是如果数据库控制主键自增(auto_increment), 不加参数就会报错.早上刚刚看了源码才发现,@GeneratedValue(strategy=GenerationType.IDENINY)

PS:@GeneratedValue注解的strategy属性提供四种值:

-AUTO主键由程序控制, 是默认选项 ,不设置就是这个

-IDENTITY 主键由数据库生成, 采用数据库自增长, Oracle不支持这种方式

-SEQUENCE 通过数据库的序列产生主键, MYSQL  不支持

-Table 提供特定的数据库产生主键, 该方式更有利于数据库的移植

@entity是指这个类映射有数据库表,那么你不使用这个类时,后台应该不会对其进行处理吧,只有当你从数据库读取数据时,由于你要读取的表映射有实体类(@entity注释的),那么后台应该会自动帮你实例化一个对象,然后将数据库中的数据填充到对象中。  指定主键的生成策略。

@Entity       对实体注释。任何Hibernate映射对象都要有这个注释

说明这个class是实体类,并且使用默认的orm规则,即class名即数据库表中表名,class字段名即表中的字段名

如果想改变这种默认的orm规则,就要使用@Table来改变class名与数据库中表名的映射规则,@Column来改变class中字段名与db中表的字段名的映射规则

@Table

 声明此对象映射到数据库的数据表,通过它可以为实体指定表(talbe),目录(Catalog)和schema的名字。该注释不是必须的,如果没有则系统使用默认值(实体的短类名)。

 @Version

             该注释可用于在实体Bean中添加乐观锁支持。

@Id

 声明此属性为主键。该属性值可以通过应该自身创建,但是Hibernate推荐通过Hibernate生成

  @Column  

声明该属性与数据库字段的映射关系。

@Column(nam=”category_name” length=20)2Publicvoid getCategoryName(){3Returnthis.categoryName;}

你可能感兴趣的:(Jpa spring常出错 源码研究)