JPA

2020-02-20  本文已影响0人  華華公子

配置

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
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<Score> 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;
    }
}

关联关系

表映射

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

实体加载方式

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

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

继承

上一篇 下一篇

猜你喜欢

热点阅读