HSQLDB 笔记

关于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);

}

发表留言

如未标注转载则文章均为本人原创,转载前先吱声,未授权转载我就锤爆你狗头。

人生在世,错别字在所难免,无需纠正。