Java教程

JPA注解

本文主要是介绍JPA注解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  • @GeneratedValue:为一个实体生成一个唯一标识的主键,@GeneratedValue提供了主键的生成策略,@GeneratedValue注解有两个属性,分别是strategy和generator

    • generator属性的值是一个字符串,默认为 "",其声明了主键生成器的名称,一般是@GeneratedValue(generator = "JDBC")

    • strategy属性提供四种值:

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

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

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

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

  • @GenericGenerator:定义主键生成器

  • @Entity:指出该Java 类为实体类,将映射到指定的数据库表。如声明一个实体类 Customer,它将映射到数据库中的 customer 表上。

  • @Table:当实体类与其映射的数据库表名不同名时使用 ,与 @Entity 标注同时使用

  • @Enumerated:使用此注解映射枚举字段,以String类型存入数据库,注入数据库的类型有两种:EnumType.ORDINAL(Interger)、EnumType.STRING(String)

  • @Embedded、@Embeddable:当一个实体类要在多个不同的实体类中进行使用,而其不需要生成数据库

    • @Embeddable:注解在类上,表示此类是可以被其他类嵌套

    • @Embedded:注解在属性上,表示嵌套被@Embeddable注解的同类型类

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

  • @Basic: 表示一个简单的属性到数据库表的字段的映射,默认使用

  • @Column:当实体的属性与其映射的数据库表的列不同名时使用

  • @Transient:表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性

  • @Temporal:在核心的 Java API 中并没有定义 Date 类型的精度(temporal precision). 而在数据库中,表示 Date 类型的数据有 DATE, TIME, 和 TIMESTAMP 三种精度(即单纯的日期,时间,或者两者 兼备).在进行属性映射时可使用@Temporal注解来调整精度

  • @OneToOne:描述一个 一对一的关联

  • @ManyToOne:表示一个多对一的映射,该注解标注的属性通常是数据库表的外键.

  • @OneToMany:描述一个 一对多的关联,该属性应该为集体类型,在数据库中并没有实际字段

  • @ManyToMany:描述一个多对多的关联.多对多关联上是两个一对多关联,但是在ManyToMany描述中,中间表是由ORM框架自动处理

  • JoinColumn:如果在entity class的field上定义了关系(one2one或one2many等),通过JoinColumn来定义关系的属性【定义外键】。

  • @MapKey:在一对多,多对多关系中,我们可以用Map来保存集合对象。默认用主键值做key,如果指定了name属性,就用指定的field的值做key。

  • @OrderBy:在一对多,多对多关系中,希望从数据库加载出来的集合对象是按一定方式排序的,这可以通过OrderBy来实现,默认是按对象的主键升序排列

  • @ElementCollection:集合映射

  • @CreatedDate、@CreatedBy、@LastModifiedDate、@LastModifiedBy:表示字段为创建时间字段(insert自动设置)、创建用户字段(insert自动设置)、最后修改时间字段(update自定设置)、最后修改用户字段(update自定设置),用法:

        1、@EntityListeners(AuditingEntityListener.class):申明实体类并加注解

        2、@EnableJpaAuditing:在启动类中加此注解

        3、在实体类中属性中加上面四种注解

        4、自定义添加用户

  • @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8"):将Date属性转换为String类型, timezone解决(相差8小时)

  • @JsonSerialize:作用在类或字段上,转化java对象到json格式(需自定义转化类继承JsonSerializer<T>

  • @JsonDeserialize:作用在类或字段上,转化json格式到java对象(需自定义转化类继承JsonDeserializer<T>)

  • @JsonProperty:作用在属性上,把属性名称序列化为另一个名称(trueName属性序列化为name)

  • @JsonIgnoreProperties(ignoreUnknown = true):作用在类上,忽略掉json数据里包含了实体类没有的字段

  • @JsonIgnore:在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响

这篇关于JPA注解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!