Spring Boot中的嵌入式数据库使用

简介: Spring Boot中的嵌入式数据库使用

Spring Boot中的嵌入式数据库使用

今天我们来探讨如何在Spring Boot中使用嵌入式数据库。嵌入式数据库是一种轻量级的数据库,适用于开发、测试和小型应用。常见的嵌入式数据库有H2、HSQLDB和Derby。

一、为什么选择嵌入式数据库

嵌入式数据库的优势在于它们的轻量级和易用性,适合在开发和测试环境中快速搭建和使用。在Spring Boot中,我们可以非常方便地集成和使用这些嵌入式数据库。

二、项目初始化

首先,创建一个Spring Boot项目,并添加必要的依赖。在pom.xml中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

三、配置H2数据库

application.properties中添加H2数据库的配置:

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true

这些配置将启用H2数据库,并在内存中创建一个名为testdb的数据库。我们还启用了H2的Web控制台,方便我们在浏览器中查看和操作数据库。

四、创建实体类和Repository

假设我们有一个简单的用户实体类和对应的Repository:

User.java

package cn.juwatech.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {
   

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;

    // Getters and Setters
}

UserRepository.java

package cn.juwatech.repository;

import cn.juwatech.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
   
}

五、创建服务层和控制器

为了更好地展示H2数据库的使用,我们创建一个简单的服务层和控制器:

UserService.java

package cn.juwatech.service;

import cn.juwatech.model.User;
import cn.juwatech.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
   

    @Autowired
    private UserRepository userRepository;

    public List<User> getAllUsers() {
   
        return userRepository.findAll();
    }

    public User createUser(User user) {
   
        return userRepository.save(user);
    }
}

UserController.java

package cn.juwatech.controller;

import cn.juwatech.model.User;
import cn.juwatech.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {
   

    @Autowired
    private UserService userService;

    @GetMapping
    public List<User> getAllUsers() {
   
        return userService.getAllUsers();
    }

    @PostMapping
    public User createUser(@RequestBody User user) {
   
        return userService.createUser(user);
    }
}

六、测试嵌入式数据库

启动Spring Boot应用程序,并使用以下命令测试API:

  1. 获取所有用户:

     curl http://localhost:8080/users
    
  2. 创建用户:

     curl -X POST http://localhost:8080/users -H "Content-Type: application/json" -d '{"name": "John Doe", "email": "john.doe@example.com"}'
    
  3. 再次获取所有用户,查看新创建的用户:

     curl http://localhost:8080/users
    

七、访问H2控制台

在浏览器中打开H2控制台,查看数据库中的数据:

http://localhost:8080/h2-console

在登录页面中,使用配置文件中的数据库URL和用户名进行登录:

  • JDBC URL: jdbc:h2:mem:testdb
  • User Name: sa
  • Password: (leave blank)

八、总结

通过以上步骤,我们成功地在Spring Boot中集成了H2嵌入式数据库,并实现了基本的CRUD操作。嵌入式数据库非常适合在开发和测试环境中使用,能够快速搭建和验证应用程序的功能。

相关文章
|
17天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
38 4
SpringBoot入门(4) - 添加内存数据库H2
|
19天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
27 2
SpringBoot入门(4) - 添加内存数据库H2
|
12天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
52 13
|
6天前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
20 4
|
21天前
|
SQL Java 数据库
Spring Boot与Flyway:数据库版本控制的自动化实践
【10月更文挑战第19天】 在软件开发中,数据库的版本控制是一个至关重要的环节,它确保了数据库结构的一致性和项目的顺利迭代。Spring Boot结合Flyway提供了一种自动化的数据库版本控制解决方案,极大地简化了数据库迁移管理。本文将详细介绍如何使用Spring Boot和Flyway实现数据库版本的自动化控制。
18 2
|
8天前
|
存储 安全 Java
springboot当中ConfigurationProperties注解作用跟数据库存入有啥区别
`@ConfigurationProperties`注解和数据库存储配置信息各有优劣,适用于不同的应用场景。`@ConfigurationProperties`提供了类型安全和模块化的配置管理方式,适合静态和简单配置。而数据库存储配置信息提供了动态更新和集中管理的能力,适合需要频繁变化和集中管理的配置需求。在实际项目中,可以根据具体需求选择合适的配置管理方式,或者结合使用这两种方式,实现灵活高效的配置管理。
8 0
|
1月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
57 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
1月前
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
22 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
1月前
|
Java 数据库 数据安全/隐私保护
Spring 微服务提示:使用环境变量抽象数据库主机名
Spring 微服务提示:使用环境变量抽象数据库主机名
40 1
|
1月前
|
存储 NoSQL API
.NET NoSQL 嵌入式数据库 LiteDB 使用教程
.NET NoSQL 嵌入式数据库 LiteDB 使用教程~