Spring Boot integrates JPA and ClickHouse database

Introduction

Spring Boot is a framework for creating standalone, Spring-based applications. It has rapid development features that can greatly reduce the developer's workload. JPA (Java Persistence API) is the standard specification for handling relational database persistence in Java, and ClickHouse is a high-performance, distributed columnar database.

This article will introduce how to integrate JPA and ClickHouse database in a Spring Boot project, and show some common operation examples.

step

1. Create a Spring Boot project

First, we need to create a new Spring Boot project. You can use https://start.spring.io/  to easily generate the project skeleton. Select the required dependencies, including Spring Data JPA and ClickHouse JDBC driver.

2. Configure ClickHouse connection

application.propertiesConfigure ClickHouse database connection information in the file . Provide the host name, port number, database name, username, and password of the ClickHouse server.

spring.datasource.url=jdbc:clickhouse://localhost:8123/mydatabase
spring.datasource.username=myuser
spring.datasource.password=mypassword

3. Define entity classes

Create a Java class that represents the entities to be stored in the ClickHouse database. Use JPA annotations to define the mapping relationship between entity classes and attributes.

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

@Entity
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private int age;

    // getters and setters
}

4. Create JPA Repository

Create an interface, extending from org.springframework.data.jpa.repository.JpaRepository, for performing database operations related to entities.

import org.springframework.data.jpa.repository.JpaRepository;

public interface EmployeeRepository extends JpaRepository<Employee, Long> {
}

5. Write business logic

Where database operations are required, inject EmployeeRepositoryand use its methods for CRUD operations.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class EmployeeService {
    private final EmployeeRepository employeeRepository;

    @Autowired
    public EmployeeService(EmployeeRepository employeeRepository) {
        this.employeeRepository = employeeRepository;
    }

    public void saveEmployee(Employee employee) {
        employeeRepository.save(employee);
    }

    public List<Employee> getAllEmployees() {
        return employeeRepository.findAll();
    }

    public Employee getEmployeeById(Long id) {
        return employeeRepository.findById(id).orElse(null);
    }

    public void deleteEmployee(Long id) {
        employeeRepository.deleteById(id);
    }
}

6. Test the application

Write unit tests or create a simple controller to test your application's functionality.

@RestController
@RequestMapping("/employees")
public class EmployeeController {
    private final EmployeeService employeeService;

    @Autowired
    public EmployeeController(EmployeeService employeeService) {
        this.employeeService = employeeService;
    }

    @PostMapping
    public void addEmployee(@RequestBody Employee employee) {
        employeeService.saveEmployee(employee);
    }

    @GetMapping
    public List<Employee> getAllEmployees() {
        return employeeService.getAllEmployees();
    }

    @GetMapping("/{id}")
    public Employee getEmployeeById(@PathVariable Long id) {
        return employeeService.getEmployeeById(id);
    }

    @DeleteMapping("/{id}")
    public void deleteEmployee(@PathVariable Long id) {
        employeeService.deleteEmployee(id);
    }
}

7. Run the application

Run the application using Spring Boot's built-in server and test various operations of the API by accessing the relevant URLs.

in conclusion

By integrating JPA and ClickHouse database, we can easily perform common database operations in Spring Boot applications. Use JPA annotations to define the mapping relationship between entity classes and attributes, and create a JPA Repository to perform entity-related database operations. Finally, write the business logic and test the functionality of the application.

The above is a brief introduction and steps for Spring Boot to integrate JPA and ClickHouse database.

Guess you like

Origin blog.csdn.net/weixin_52721608/article/details/132775833