ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JPA注解

2022-02-16 22:31:38  阅读:161  来源: 互联网

标签:实体类 映射 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,数据库,注解,主键,属性
来源: https://www.cnblogs.com/yjh1995/p/15902593.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有