java - example - spring boot jdbc h2
El archivo basado en h2 persistió pero no se cargó en Spring Boot (1)
Hice una pequeña aplicación basada en Spring Boot:
- arranque-arranque-inicio-web
- spring-boot-starter-data-jpa
La aplicación tiene simplemente una clase de dominio Post.java
. En consecuencia, hay un RestController y un DAO. Se supone que los datos deben persistir en un archivo basado en db hsql.
Cuando la aplicación se está ejecutando todo parece estar bien. Los datos se almacenan. El archivo h2 se crea y contiene instrucciones de inserción.
Sin embargo, cuando mato la aplicación y la inicio una segunda vez. No hay datos cargados. (Como si se creara un nuevo archivo db, que sobrescribió el anterior).
application.properties
spring.datasource.url = jdbc:h2:file:~/testdb
spring.datasource.username = sa
spring.datasource.password = sa
spring.datasource.driverClassName = org.h2.Driver
pom.xml
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Data JPA -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- H2 DB -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.179</version>
</dependency>
PostDAO.java
public interface PostDAO extends JpaRepository<Post, Integer>{
public Post findByMessage(String message);
}
Post.java
@Entity
public class Post {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String message;
public Post(){
}
public Post(String message) {
super();
this.message = message;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
El valor predeterminado para spring.jpa.hibernate.ddl-auto
es create-drop
si utiliza una base de datos integrada. Probablemente quiera que esté vacío, o simplemente validate
( none
podría funcionar tan bien, pero creo que está en desuso por hibernación).