Spring Data JPA中@Entity相关的注解

 时间:2024-10-11 19:49:29

1、@Entity注解加在实体类上,定义对象将会成为被JPA管理的实体,将映射到指定的数据库。@Table注解用来说明该实体类对应的表和数据库,其中name =“xxx",用来表示数据表的名字,catalog = “xxx"是数据库的名字,@Data注解是lambda的注解,用来节省代码开发的,不是JPA中的注解。

Spring Data JPA中@Entity相关的注解

2、接下来我们来介绍自增主键,我们一般自增主键的荏半吨蛸名字都会用id来表示,@Id注解表名是表的自增主键,一个实体里只能又一个。@Ge荏鱿胫协neratedValue(strategy = GenerationType.IDENTITY)指定自增主键的自增策略,GenerationType有四个值:TABLE、SEQUENCE、IDENTITY、AUTO,我们常用的是后两种,一般mysql数据库使用SEQUENCE,AUTO的话是让JPA自己选择合适的策略,默认的策略就是AUTO。

Spring Data JPA中@Entity相关的注解

3、@IdClass注解可以实现一个实体类中有两个主健,即联合主健。首先我们需要创建一个联合主健类并且实现序坐逃缥卯列化接口,类名为TeacherBlogKey,该类中有id和studentId这两个字段,这个类的要求有三个:1.需要实现Serializable接口,这个我们已经做到了;2. 是需要有一个默认的public的无参构造方法,我们使用lambda的@NoArgsConstructor帮我们实现,或者如果没有定义有参构造的情况下,这个注解也不需要了,因为有默认的无参构造方法;3.必须覆写equals和hashCode方法。使用时,在Teacher实体类上使用@IdClass(value = TeacherBlogKey.class)注解,然后id和studentId都分别使用@Id注解即可。

Spring Data JPA中@Entity相关的注解
Spring Data JPA中@Entity相关的注解

4、@Basic表示属性到数据库字段的映射,实体类的属性不加任何注解的时候默认是@Basic注解。如果字段需要特别说明的话,我们使用@Column注解,该注解定义属性对应数据库的列名,以及是否为空等的限制。还有@NonNull注解这注解和@Column(nullable = false)的效果是一样的。

Spring Data JPA中@Entity相关的注解

5、如果实体类中的一个属性并不想和数据库中的字段做映射的话,我们可以使用@Transient注解,这个注解表示非持久化属性,与@Basic注解的作用相反,JPA映射数据库的时候会忽略它。

Spring Data JPA中@Entity相关的注解

6、@Temporal注解用来设置Date类型的属性精度的设置,@Temporal(TemporalType.TIMESTAMP)精确到“年月日时分秒”,当然如果你使用的是spring框架的话,也可以用@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")注解来代替。TemporalType.DATE表示只有日期,TemporalType.TIME表示只有时间。

Spring Data JPA中@Entity相关的注解

7、@Enumerated是用来映射枚菰灞巴静举类型的字段的,首先我们创建一个枚举类用来表示性别,在需要枚举类属性的实体类中,使用@Enu罪焐芡拂merated(EnumType.STRING)注解,另外还需要@Column(name = "gender", columnDefinition = "ENUM")定义字段的类型为枚举,因为如果不使用@Column指定字段是枚举类型,若配置了spring.jpa.properties.hibernate.hbm2ddl.auto = validate, 启动会报错。

Spring Data JPA中@Entity相关的注解
Spring Data JPA中@Entity相关的注解
  • 纸嫁衣第三章怎么过?
  • C#如何声明一维数组
  • 下肢僵硬怎么办-下肢僵硬的预防方法
  • 怎么发远程控制 如何远程控制计算机
  • 如何做咸蛋黄茄子?
  • 热门搜索
    平安校园手抄报资料 卫生手抄报内容 语文天地手抄报内容 争做文明学生手抄报 手抄报小图案 猜字谜手抄报 人间真情手抄报 诗情画意手抄报 法制小报手抄报 国家卫生城市手抄报