JPA

作者: 華華公子 | 来源:发表于2020-02-20 10:15 被阅读0次

配置

  • maven
<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>
  • 配置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<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;
    }
}

关联关系

表映射

  • OneToOne
  • OneToMany

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

  • ManyToOne
  • ManyToMany

实体加载方式

  • FetchType.EAGER

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

  • FetchType.LAZY

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

继承

  • @Inheritance

相关文章

网友评论

      本文标题:JPA

      本文链接:https://www.haomeiwen.com/subject/pkitqhtx.html