关于hsqldb
因为最近在重构溯光的代码,想把框架的依赖关系简化,改用了springboot,在持久层方面考虑到数据库交互的需求并不复杂,所以弃用了MySQL。而选择嵌入式数据库,最终在SQLite和HSQLDB中选择了后者。
什么是 hsqldb
HSQLDB (HyperSQL DataBase) 是一个由java开发的数据库,使用非常简单快速,在这里可以下载到最新版本。https://sourceforge.net/projects/hsqldb/files/
有何优点
从我改用hsqldb的出发点就可以看出,hsqldb更适合用于简单的数据存储,更适合用在java项目上。不需要像mysql一样经过复杂的配置和安装,完全可以嵌入在java项目中。有多种模式可选。
hsqldb的模式
- 内存模式 :就是在内存中存储数据,存取更快,但一旦退出,数据就会随着内存被销毁,只适用于一次性存储。
- 进程模式 :我使用的是这种模式,数据以文件存储,重启后只要不修改文件地址依然可以访问到数据。
- 服务器模式 : 和一般的服务式数据库无异。
与spring boot整合
首先添加jpa和hsqldb的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>runtime</scope>
</dependency>
application.properties
# HSQLDB
spring.datasource.url=jdbc:hsqldb:file:G:/test/tarackray
spring.datasource.username=sa
spring.datasource.password=123456
spring.datasource.driverClassName=org.hsqldb.jdbcDriver
spring.datasource.sqlScriptEncoding=utf-8
spring.jpa.hibernate.ddl-auto=update
在启动类加上这几个注解,分别是启动组件扫描,开启自动装配
@SpringBootApplication
@ComponentScan
@EnableAutoConfiguration
entity类
@Entity(name = "Task")
@Data
public class TaskDTO implements Serializable {
@Id
private String taskMd5;
....
}
Jpa持久层接口
public interface TaskRepository extends CrudRepository<TaskDTO, String> {
List<TaskDTO> findAllByTaskMd5(String taskMd5);
}