如何解决如何在运行后将硬编码数据添加到Spring Boot Project中,使其在数据库中
我很抱歉这个问题的标题。我完全确定该如何措辞。
一些背景知识:我对Spring还是很陌生,所以有很多与Spring相关的事情完全困扰了我。我最近启动了一个新的实践项目,在其中创建了药品清单应用程序。到目前为止,我已经建立了模型和存储库。我决定实现PostgreSQL数据库。
过去我从事过一些Spring项目,如果我没有记错的话,可以对为测试目的而创建的模型的某些实例进行硬编码。因此,当您运行Spring Boot应用程序时,这些实例将已经存在于数据库中,因此事后我不必通过pgAdmin或sql shell自行添加它们。
对于将信息确切地“硬编码”在何处以及它是否将采用JSON格式,我感到困惑。我认为它将进入我的InventoryApplication.java的主要功能,因为那是我的spring boot程序正在运行的地方,但是我不确定。
以下是我的一些文件,以便了解我的项目流程:
InventoryApplication.java
package com.oasis.inventory;
import com.oasis.inventory.model.*;
import com.oasis.inventory.repository.*;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class InventoryApplication {
public static void main(String[] args) {
SpringApplication.run(InventoryApplication.class,args);
}
}
pharmaceutical.java
package com.oasis.inventory.model;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.*;
@Entity
@Table(name = "pharmaceuticals")
public class Pharmaceutical {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "genericName")
private String genericName;
@Column(name = "brandNames")
private ArrayList<String> brandNames;
@Column(name = "strength" )
private String strength;
@Column(name = "quantity")
private int quantity;
@ManyToMany(fetch = FetchType.LAZY,cascade = {
CascadeType.PERSIST,CascadeType.MERGE
})
@JoinTable(name = "pharm_commonuses",joinColumns = { @JoinColumn(name = "pharmaceutical_id") },inverseJoinColumns = { @JoinColumn(name = "commonUse_id") })
private Set<CommonUse> commonUses = new HashSet<>();
public Pharmaceutical() {}
public Pharmaceutical(String genericName,ArrayList<String> brandNames,String strength,int quantity) {
this.genericName = genericName;
this.brandNames = brandNames;
this.strength = strength;
this.quantity = quantity;
}
public String getGenericName() {
return genericName;
}
public void setGenericName(String genericName) {
this.genericName = genericName;
}
public ArrayList<String> getBrandNames() {
return brandNames;
}
public void setBrandNames(ArrayList<String> brandNames) {
this.brandNames = brandNames;
}
public String getStrength() {
return strength;
}
public void setStrength(String strength) {
this.strength = strength;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public long getId() {
return id;
}
@Override
public String toString() {
return "Pharmaceutical [id=" + id + ",genericName=" + genericName + ",brandNames=" + brandNames
+ ",strength=" + strength + ",quantity=" + quantity + ",commonUses=" + commonUses + "]";
}
public Set<CommonUse> getCommonUses() {
return commonUses;
}
}
application.properties
server.port=8081
spring.datasource.initialization-mode=always
spring.datasource.platform=postgres
spring.datasource.url=jdbc:postgresql://localhost:5432/testdb
spring.datasource.username=postgres
spring.datasource.password= sEcReT
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation= true
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.PostgreSQLDialect
# Hibernate ddl auto (create,create-drop,validate,update)
# For prod,change to validate
spring.jpa.hibernate.ddl-auto= update
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.oasis</groupId>
<artifactId>inventory</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>inventory</name>
<description>pharmaceuticals inventory management system</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。