我做了一个基于Spring Boot的小应用程序:
该应用程序仅具有一个域类Post.java。因此,有一个RestController和一个DAO。该数据应保留在基于文件的hsql db中。
Post.java
当应用程序运行时,一切似乎都很好。数据已存储。h2文件已创建并包含insert语句。
但是,当我终止该应用程序并再次启动它时。没有数据加载。(好像创建了一个新的db文件,它覆盖了旧的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
<!-- 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); }
@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时代已弃用)。
spring.jpa.hibernate.ddl-auto
create- drop
validate
none