Sto usando JPA in Spring Boot 2 e vi vorrei fare alcune domande.
Questa è la mia configurazione:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.8</version>
</dependency>
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=create
spring.jpa.hibernate.show-sql=true
spring.datasource.url=jdbc:postgresql://127.1.1.1:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=password
1) Se scrivo 'spring.jpa.hibernate.ddl-auto=create' ogni volta che avvio l'applicazione su IntelliJ il mio DB viene azzerato. In produzione userò quindi 'spring.jpa.hibernate.ddl-auto=none'. Nella documentazione c'è scritto che 'spring.jpa.hibernate.show-sql=true' crea il dump ma non capisco bene che significa.
Il dump ovvero l'export del database si fa da pgAdmin 4, non da Java!?!?
Nella mia applicazione butto dentro il db i seguenti dati:
package com.example.RestSpring;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class Application {
@Bean
public CommandLineRunner initDB(final PersonRepository repo){
return new CommandLineRunner() {
@Override
public void run(String... args) throws Exception {
repo.save(new Person("Mario","Rossi"));
repo.save(new Person("Andrea","Bianchi"));
repo.save(new Person("Laura","Verdi"));
}
};
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
2) C'è modo di buttare dentro il DB quei dati solo se inesistenti? In pratica vorrei usare già in fase di produzione 'spring.jpa.hibernate.ddl-auto=none'. Se uso 'none' ogni volta che premo su run vengono aggiunti quei dati. Io vorrei creare con JPA uno scheda del DB + una serie di utenti. Nella mia applicazione ci saranno solo 3 utenti.
Qual'è il modo giusto per fare ciò?