Appearance
实体类
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