/spring-data-yugabytedb

Spring Data Module for YugabyteDB.

Primary LanguageJavaApache License 2.0Apache-2.0

Spring Data YugabyteDB

This project brings the power of Distributed SQL to Spring developers by using an enhanced underlying JDBC driver - which brings most features of PostgreSQL (as of v11.2) into a distributed database that is scalable and fault-tolerant. This project is based on Spring Data JPA.

Unique Features

In addition to providing most PostgreSQL features on top of a scalable and resilient distributed database, this project aims to enable the following:

  • Eliminate Load Balancer from SQL (cluster-awareness)

  • Develop Geo-Distributed Apps (topology-awareness)

  • Row Level Geo-partitioning support (partition-awareness)

Getting Started

Maven configuration

Add the Maven dependency:

<dependency>
  <groupId>com.yugabyte</groupId>
  <artifactId>spring-data-yugabytedb</artifactId>
  <version>2.1.10-yb-1</version>
</dependency>

Data source configuration

To enable the YugabyteDB configuration create configuration class:

@Configuration
public class DatabaseConfiguration extends AbstractYugabyteConfiguration {
  // Here you can override the dataSource() method to configure the DataSource in code.
}

Configure your application.properties. For instance:

spring.yugabyte.initialHost=localhost
spring.yugabyte.port=5433
spring.yugabyte.database=yugabyte
spring.yugabyte.user=yugabyte
spring.yugabyte.password=yugabyte
spring.yugabyte.maxPoolSizePerNode=8
spring.yugabyte.connectionTimeoutMs=10000
spring.yugabyte.generate-ddl=true
spring.yugabyte.packages-to-scan=com.example.spring.jpa.springdatajpaexample.domain

See also the spring-data-yugabytedb-example app.