Posted in

How to set up an H2 database in microservices?

When building microservices, we often need a lightweight and fast database for development and testing. H2 Database is an in-memory database that makes it super easy to run applications without worrying about external DB setup.

Here’s why H2 is widely used in microservices:
✅ Lightweight & easy to configure
✅ Runs in-memory or file mode
✅ Great for quick testing (no need to install MySQL/Postgres locally)
✅ Integrates seamlessly with Spring Boot

Steps to configure H2 in a Spring Boot Microservice:

1- Add the given below maven dependency in pom.xml

i) H2 Database dependency

<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<scope>runtime</scope>
		</dependency>

ii) Spring Data JPA dependency

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>

2- Configure application.yml or application.properties

server:
  port : 8080
spring:
  datasource:
    url: jdbc:h2:mem:testdb     # In-memory DB (deleted when app stops)
    driver-class-name: org.h2.Driver
    username: sa
    password:
  h2:
    console:
      enabled: true             # Enable H2 web console
      path: /h2-console         # URL -> http://localhost:8080/h2-console
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect
    hibernate:
      ddl-auto: update          # Options: none, validate, update, create, create-drop
    show-sql: true
    properties:
      hibernate:
        format_sql: true
        use_sql_comments: true

3- Create schema.sql file in resources directory

This will automatically creates tables based on SQL scripts when application starts.

CREATE TABLE IF NOT EXISTS `customer` (
  `customer_id` int AUTO_INCREMENT  PRIMARY KEY,
  `name` varchar(100) NOT NULL,
  `email` varchar(100) NOT NULL,
  `mobile_number` varchar(20) NOT NULL,
  `created_at` date NOT NULL,
  `created_by` varchar(20) NOT NULL,
  `updated_at` date DEFAULT NULL,
    `updated_by` varchar(20) DEFAULT NULL
);

CREATE TABLE IF NOT EXISTS `accounts` (
  `customer_id` int NOT NULL,
   `account_number` int AUTO_INCREMENT  PRIMARY KEY,
  `account_type` varchar(100) NOT NULL,
  `branch_address` varchar(200) NOT NULL,
  `created_at` date NOT NULL,
   `created_by` varchar(20) NOT NULL,
   `updated_at` date DEFAULT NULL,
    `updated_by` varchar(20) DEFAULT NULL
);

4- Start your application and open the H2 console at

http://localhost:8080/h2-console

5- Use given below connection details to connect H2 DB

That’s it! 🎉 Your microservice is now running with an H2 database.

👉 Pro tip: Use H2 only for development and testing. For production, always switch to a robust database like MySQL, PostgreSQL, or Oracle.

Leave a Reply

Your email address will not be published. Required fields are marked *