前言
本文介绍如何使用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<Author> 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<Book> books = new HashSet<>();
}
- 执行程序
- 打开navicat 查看数据库,发现已经初始化了相关表;
总结
这里spring.jpa.hibernate.ddl-auto可以是none,update,create,create-drop。具体含义如下:
- none 不改变表结构
- update 通过entity结构改变数据库结构
- create 每次都打开的时候新建数据库,关闭的时候删除数据库
- create-drop 创建数据库,然后在SessionFactory关闭的时候删除数据库;