JPA

配置

  • maven

    org.springframework.boot
    spring-boot-starter-data-jpa


    org.springframework.boot
    spring-boot-starter-jdbc


    mysql
    mysql-connector-java
    runtime

  • 配置Hibernate
spring.jpa.hibernate.ddl-auto=create-drop //每次启动自动新建表
spring.jpa.show-sql=true
  • 配置自动扫描
@EntityScan(value = "org.yiva.exam.springboot.jpa.pojo")
@EnableJpaRepositories(value = "org.yiva.exam.springboot.jpa.dao")

编码

  • 实体类

使用mappedBy的属性所表示的对象,是需要使用外键的类。mappedBy属性用于双向关联实体时,标注在不保存关系的实体中。

@Entity //注解此类是一个实体类
@Access(value = AccessType.FIELD) //通过属性进行参数声明
@Table(name = "t_students") //对应表名
public class Student {

    @Id //主键
    @GeneratedValue(strategy = GenerationType.IDENTITY) //自增
    private long id;

    @Column(length = 50)
    private String name;

    //主外键关联,将在t_score表中创建外键
    @OneToMany(mappedBy = "student")
    private List scores;

    //主外键关联,将在t_student_card表中创建外键
    @OneToOne(mappedBy = "student")
    private StudentCard studentCard;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

关联关系

表映射

  • OneToOne
  • OneToMany

指向的目录实体为需要外键的一方

  • ManyToOne
  • ManyToMany

实体加载方式

  • FetchType.EAGER

取A表数据,对应B表的数据都会跟着一起加载,速度慢

  • FetchType.LAZY

查询表A的数据时,访问不到表B的数据,速度快

继承

  • @Inheritance

你可能感兴趣的:(JPA)