Spring boot jpa entity

前言

本文介绍如何使用spring boot jpa entity。

开发环境如下:

项目 说明
jdk 1.8
idea 2017-03(已经安装lombok插件)
mysql 5.6 推荐使用docker
navicat mysql 客户端

操作步骤

  • 新建spring boot项目
  • 使用navicat新建数据库db_example
  • 修改配置文件./src/main/resources/application.properties
spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:mysql://localhost:3306/db_example
spring.datasource.username=root
spring.datasource.password=123456
  • 添加实体类book
package org.nick.bootstart.model;/*
 * @Author      : Nick
 * @Description :
 * @Date        : Create in 12:18 2018/4/30
 **/

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Generated;
import lombok.NoArgsConstructor;

import javax.persistence.*;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
public class Book {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
    private String title;
    private String isbn;
    public String publisher;

    @ManyToMany
    @JoinTable(name = "author_book", joinColumns = @JoinColumn(name = "book_id"), inverseJoinColumns = @JoinColumn(name = "author_id"))
    public Set authors = new HashSet<>();

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Book book = (Book) o;
        return id == book.id &&
                Objects.equals(title, book.title) &&
                Objects.equals(isbn, book.isbn) &&
                Objects.equals(publisher, book.publisher);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id);
    }

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", title='" + title + '\'' +
                ", isbn='" + isbn + '\'' +
                ", publisher='" + publisher + '\'' +
                '}';
    }
}
  • 添加Author
package org.nick.bootstart.model;/*
 * @Author      : Nick
 * @Description :
 * @Date        : Create in 12:36 2018/4/30
 **/

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
public class Author {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
    private String firstName;
    private String lastName;

    @ManyToMany(mappedBy = "authors")
    private Set books = new HashSet<>();


}
  • 执行程序
  • 打开navicat 查看数据库,发现已经初始化了相关表;
    Spring boot jpa entity_第1张图片
    image.png

总结

这里spring.jpa.hibernate.ddl-auto可以是none,update,create,create-drop。具体含义如下:

  • none 不改变表结构
  • update 通过entity结构改变数据库结构
  • create 每次都打开的时候新建数据库,关闭的时候删除数据库
  • create-drop 创建数据库,然后在SessionFactory关闭的时候删除数据库;

你可能感兴趣的:(Spring boot jpa entity)