基于文件的h2持久但未在Spring Boot中加载
我做了一个基于Spring Boot的小应用程序:
- 弹簧引导启动的Web
- 弹簧引导起动数据JPA
该应用程序只有一个域类Post.java
。 因此,有一个RestController和一个DAO。 数据应该保存在基于文件的hsql db中。
当应用程序运行时,一切似乎都很好。 数据存储。 创建了h2文件并包含insert语句。
但是,当我杀死应用程序并再次启动它时。 没有加载数据。 (好像创建了一个全新的db文件,它覆盖了旧文件)。
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
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-data-jpa com.h2database h2 1.4.179
PostDAO.java
public interface PostDAO extends JpaRepository{ 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; } }
如果使用嵌入式数据库,则spring.jpa.hibernate.ddl-auto
的默认值为create-drop
。 你可能希望它是空的,或者只是validate
( none
可能工作得很好,但我认为hibernate不赞成)。