Java Code Walkthrough
This page is part of MariaDB's Documentation.
The parent of this page is: Quickstart Code Walkthrough
Topics on this page:
Overview
This walkthrough explains how to perform a simple test of a SkySQL service using Java code, as described in our Quickstart experience.
Done with this walkthrough? Return to Step 3 of the Quickstart
Dependencies
Java Development Kit (JDK) 8 or later
Spring Boot 2.4.0 or later
Spring Data JPA
Install MariaDB Connector/J
Maven and Gradle can install MariaDB Connector/J as a dependency of your application during build.
Alternatively, you can install MariaDB Connector/J using JAR.
Maven
To install the example dependencies and the latest version of MariaDB Connector/J using Maven, add the following <parent>
section and <dependencies>
section to your pom.xml
file:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.6</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>3.0.11</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0.2</version>
</dependency>
</dependencies>
Gradle
To install the example dependencies and the latest version of MariaDB Connector/J using Gradle, add the following to your build.gradle
file:
compile "org.mariadb.jdbc:mariadb-java-client:3.0.11"
Prepare Code
Connect
Configure the connection by editing the application.properties
file. Use the host, username, and password that you can get by clicking "CONNECT TO SERVICE" on the service listing on the "Your Services" page instead of the placeholder text that follows:
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MariaDBDialect
spring.datasource.url=jdbc:mariadb://quickstart.mdbxxxxxxx.db.skysql.net:5001/spring_demo?useSsl=true&serverSslCert=/path/to/skysql_chain.pem&createDatabaseIfNotExist=true
spring.datasource.username=DBXXXXXXXX
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
Create an Entity
Create the following JPA Entity in a ProgrammingLanguage.java file:
package com.example;
import java.util.Objects;
import javax.persistence.*;
@Entity
@Table(name = "programming_language")
public class ProgrammingLanguage {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "pl_id")
private Integer id;
@Column(name = "pl_name")
private String name;
@Column(name = "pl_rating")
private Integer rating;
public ProgrammingLanguage() {
}
public ProgrammingLanguage(String name, Integer rating) {
this.name = name;
this.rating = rating;
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
ProgrammingLanguage that = (ProgrammingLanguage) o;
return Objects.equals(id, that.id);
}
@Override
public int hashCode() {
return Objects.hash(id);
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getRating() {
return rating;
}
public void setRating(Integer rating) {
this.rating = rating;
}
}
Create a Repository
Create the following Repository in a ProgrammingLanguageRepository.java file:
package com.example;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProgrammingLanguageRepository extends
JpaRepository<ProgrammingLanguage, Integer> {
}
Use the Repository
You can inject references of type ProgrammingLanguageRepository
in any Spring-managed bean. For example, the following command line application saves objects of type ProgrammingLanguage
in the database, loads them from the database, and prints their names in the output:
package com.example;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class Application {
private final ProgrammingLanguageRepository repository;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
public Application(ProgrammingLanguageRepository repository) {
this.repository = repository;
}
@Bean
public ApplicationRunner applicationRunner() {
return args -> {
createProgrammingLanguages();
printTopProgrammingLanguages();
};
}
private void createProgrammingLanguages() {
Map<String, Integer> data = Map.of(
"Python", 10,
"Java", 9,
"C++", 8,
"JavaScript", 7,
"C#", 6,
"Go", 5,
"Rust", 4,
"PHP", 3
);
Arrays.stream(data.keySet().toArray(new String[data.size()]))
.map(name -> new ProgrammingLanguage(name, data.get(name)))
.forEach(repository::save);
}
private void printTopProgrammingLanguages() {
List<ProgrammingLanguage> programmingLanguages = repository.findAll();
programmingLanguages.stream()
.map(pl -> pl.getRating() + " - " + pl.getName())
.forEach(System.out::println);
}
}
Run the Test
Those using Maven can start the application by running the following command (or equivalent option in your IDE):
$ mvn spring-boot:run
You should see something similar to the following output among all the informational lines:
4 - Rust
8 - C++
9 - Java
6 - C#
7 - JavaScript
10 - Python
3 - PHP
5 - Go
Done with this walkthrough? Return to Step 3 of the Quickstart