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操作。嵌入式数据库非常适合在开发和测试环境中使用,能够快速搭建和验证应用程序的功能。

相关文章
|
6天前
|
SQL Java 数据库
使用Spring Boot和Flyway进行数据库迁移
使用Spring Boot和Flyway进行数据库迁移
|
4天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的《数据库原理及应用》课程平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的《数据库原理及应用》课程平台的详细设计和实现(源码+lw+部署文档+讲解等)
|
6天前
|
SQL XML Java
解决Spring Boot项目中的数据库迁移问题
解决Spring Boot项目中的数据库迁移问题
|
6天前
|
缓存 NoSQL Java
使用Spring Boot和Couchbase实现NoSQL数据库
使用Spring Boot和Couchbase实现NoSQL数据库
|
3天前
|
前端开发 Java 应用服务中间件
Spring Boot 2.x 嵌入式 Servlet 容器
Spring Boot使用内嵌Tomcat,默认端口8080,可通过`application.properties`配置端口、上下文路径等。配置方式有两种:1) 直接在配置文件中添加`server.port`和`server.servlet.context-path`;2) 创建`WebServerFactoryCustomizer` Bean来自定义配置,如设置端口`factory.setPort(8083)`,这种方式优先级更高。
|
3天前
|
XML Java 应用服务中间件
springboot定制嵌入式的servlet
SpringBoot允许定制嵌入式Servlet容器,如修改配置或更换默认的Tomcat。配置可通过`application.properties`设置`server.port`和`server.tomcat.*`属性。此外,可创建`EmbeddedServletContainerCustomizer` Bean来自定义容器,例如改变端口。要替换默认的Tomcat,需排除`spring-boot-starter-tomcat`依赖,并引入`spring-boot-starter-jetty`。
|
7天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的《数据库原理及应用》课程平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的《数据库原理及应用》课程平台附带文章源码部署视频讲解等
12 0
|
7天前
|
监控 Java 数据库连接
解决Spring Boot中的数据库连接池问题
解决Spring Boot中的数据库连接池问题
|
9天前
|
存储 关系型数据库 MySQL
探索MySQL:关系型数据库的基石
MySQL,作为全球最流行的开源关系型数据库管理系统(RDBMS)之一,广泛应用于各种Web应用、企业级应用和数据仓库中
|
7天前
|
关系型数据库 MySQL 网络安全
Mysql 数据库主从复制
在MySQL主从复制环境中,配置了两台虚拟机:主VM拥有IP1,从VM有IP2。主VM的`my.cnf`设置server-id为1,启用二进制日志;从VM设置server-id为2,开启GTID模式。通过`find`命令查找配置文件,编辑`my.cnf`,在主服务器上创建复制用户,记录二进制日志信息,然后锁定表并备份数据。备份文件通过SCP传输到从服务器,恢复数据并配置复制源,启动复制。检查复制状态确认运行正常。最后解锁表,完成主从同步,新用户在从库中自动更新。
920 6
Mysql 数据库主从复制