【HSQL】【Springboot】建立数据库映射

maven

 		<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.4.32.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <version>2.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>

配置

我使用的文件存储

spring.datasource.url= jdbc:hsqldb:file:./data/logdb;shutdown=true
spring.datasource.username=
spring.datasource.password=
spring.datasource.driverClassName =org.hsqldb.jdbcDriver

spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.use-new-id-generator-mappings=false

IDEA连接数据库

这一步主要是可以通过idea管理数据库,进行操作很方便
1.添加数据源
在这里插入图片描述
2.设置本地的驱动程序,填写相关信息即可,如果不存在这个数据库,会创建数据库,建议通过这个方式创建数据库,不然可能出现异常报错。注意url里设置shutdown=true,不然异常关闭数据库也会报错
在这里插入图片描述

3.console。可以通过console进行SQL操作,很方便
在这里插入图片描述

实体类

主要针对有继承关系的情况
在基类使用JOINED策略,派生类不做什么特殊配置,数据库中基类表和派生类表用外键关联,分别存储信息。其它映射方式可参考Hibernate(Spring-Data)3种实体继承创建表方式指南
基类,我这里用了lombok.Data,使用主键自增

@Data
@NoArgsConstructor
@SuperBuilder

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "Plan")
public class Plan {
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    private  int id;
}

派生类

@Data
@AllArgsConstructor
@SuperBuilder

@Entity
@Table(name = "yearplan")
public class YearPlan extends Plan {
    private int year;
    public YearPlan() {
    }
}

数据库建表

主要是设置自增策略、外键更新策略,设置自增从1开始,因为JPA中,id为0的数据会无法操作

CREATE TABLE Plan
(id INT GENERATED BY DEFAULT AS IDENTITY(START WITH 1 INCREMENT BY 1) ,
 text VARCHAR(256),
 state INT,
 PRIMARY KEY (id));
CREATE TABLE YearPlan
(id INT,
 year INT,
 FOREIGN KEY (id) REFERENCES Plan(id) on DELETE cascade ON update cascade );

JPA、数据使用

使用JpaRepository会有很多问题,比如触发约束不满足、方法不存在等,save在id相同时,相当于update

import org.app.mylog.dataplane.entity.Plan;
//import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface PlanDao extends CrudRepository<Plan, Integer> {
    Plan save(Plan plan);
    void deleteById(int ID);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值