#1
This guide compares ClickHouse JDBC driver and HTTP client integration in Spring Boot to help you choose the right approach.

1. JDBC Driver Approach

Add dependency:
<dependency>
  <groupId>com.clickhouse</groupId>
  <artifactId>clickhouse-jdbc</artifactId>
  <version>0.3.2-patch</version>
</dependency>
Configure in application.properties:
spring.datasource.url=jdbc:clickhouse://localhost:8123/default
spring.datasource.driver-class-name=com.clickhouse.jdbc.ClickHouseDriver
Use JpaRepository or JdbcTemplate to query data. JDBC is good for SQL integration with Spring Data.

2. HTTP Client Approach

Add dependency:
<dependency>
  <groupId>com.clickhouse</groupId>
  <artifactId>clickhouse-http-client</artifactId>
  <version>0.3.2-patch</version>
</dependency>
Send queries with Spring’s RestTemplate or WebClient:
String sql = "SELECT count(*) FROM metrics";
String response = restTemplate.postForObject(
    "http://localhost:8123", sql, String.class
);
HTTP is lightweight and flexible, great for custom queries and streaming responses.

3. When to Use JDBC

  • Seamless Spring Boot integration.
  • Works with JPA and Spring Data.
  • Easier for ORM-based CRUD operations.

4. When to Use HTTP

  • Lightweight and fast for analytics queries.
  • Flexible for raw SQL execution.
  • Good for microservices that need direct ClickHouse queries.

image quote pre code