Skip to content
On this page

实体类

ORM框架的核心时对实体类和数据进行关联映射,并根据实体类自动生成表,这样在操作实体类时即可对表进行增删改查操作,因为对实体类的配置至关重要

在实体类的配置上,spring data jpa并没有一套新的注解,而是使用jpa,即包含jdk在javax.persistence包下的注解

  • @Entity:必需项,使用此注解标记java类是一个jpa实体,数据库中创建的表名默认和类名一致
  • @Table(name="", catalog="", schema=""):可选,用来标注一个数据库对应的实体,数据库中创建的表名默认和类名一致,其通常和@Entity配合使用,只能标注在实体类的class定义处,表示实体对应的数据库表的信息。注解中的name属性是可选的,用来自定义实体对应的数据库表的名称
  • @Id:必需项,定义映射到数据库表的主键
  • @GeneratedValue(strategy = GenerationType.IDENTITY, generator = ""):可选,strategy属性表示主键生成策略
    • AUTO
    • IDENTITY(自增长,调用save方法,如果实体对象有设置主键而且数据库有对应的主键表数据,就会更新;如果没有对应的主键就会插入数据,而且主键使用的是自增,而不是实体对象设置的主键)
    • SEQUENCE
    • TABLE
  • genertor属性表示主键生成器的名称
  • @Cloumn(name="dept_id", nullable=false, length=32):可选用来表述数据表中该字段的详细定义
    • name:表示在数据库中该字段的名称,默认生成的字段和属性名称一致
    • nullable:表示字段师傅允许为null,默认为true
    • unique:表示字段是否是唯一标识,默认false
    • length:标识字段的大小,仅对String类型字段有效
  • @Transient:可选,用来标识该属性并非是要映射到数据库表的字段,ORM框架将会忽略该属性

实体类

package com.huangjiliang.jpa.entity;

import lombok.Data;

import javax.persistence.*;

@Entity
@Table(name = "employee")
@Data
public class Employee {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column
    private Integer number;

    @Column
    private String name;

    @Column
    private String gender;

    @Transient
    private Integer age;

}

添加实体类和对应的注解之后,启动项目,项目控制台会打印创建表相关信息

create table employee (
       id integer not null auto_increment,
        gender varchar(255),
        name varchar(255),
        number integer,
        primary key (id)
    ) engine=InnoDB