This guide shows how to use
graph data models in
SAP HANA Express with
Spring Boot for storing and querying connected data.
1. Create Graph Workspace in HANA
First, create tables for nodes and edges:
CREATE COLUMN TABLE PERSON (
ID INTEGER PRIMARY KEY,
NAME NVARCHAR(100)
);
CREATE COLUMN TABLE FRIENDSHIP (
SOURCE INTEGER,
TARGET INTEGER,
FOREIGN KEY (SOURCE) REFERENCES PERSON(ID),
FOREIGN KEY (TARGET) REFERENCES PERSON(ID)
);
Create graph workspace:
CREATE GRAPH WORKSPACE SOCIAL_GRAPH
EDGE TABLE FRIENDSHIP
SOURCE COLUMN SOURCE
TARGET COLUMN TARGET
VERTEX TABLE PERSON
KEY COLUMN ID;
2. Insert Sample Data
INSERT INTO PERSON VALUES (1, 'Alice');
INSERT INTO PERSON VALUES (2, 'Bob');
INSERT INTO PERSON VALUES (3, 'Charlie');
INSERT INTO FRIENDSHIP VALUES (1, 2);
INSERT INTO FRIENDSHIP VALUES (2, 3);
3. Configure Spring Boot
application.properties:
spring.datasource.url=jdbc:sap://localhost:39015/?databaseName=HXE
spring.datasource.username=SYSTEM
spring.datasource.password=YourPassword
spring.datasource.driver-class-name=com.sap.db.jdbc.Driver
4. Write Repository
You can run graph queries using JDBC template:
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class GraphRepository {
private final JdbcTemplate jdbc;
public GraphRepository(JdbcTemplate jdbc) {
this.jdbc = jdbc;
}
public List<String> getFriends(String person) {
String sql = """
SELECT P2.NAME
FROM GRAPH_WORKSPACE SOCIAL_GRAPH
MATCH (P1)-[:FRIENDSHIP]->(P2)
WHERE P1.NAME = ?
""";
return jdbc.queryForList(sql, String.class, person);
}
}
5. Expose via REST
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/graph")
public class GraphController {
private final GraphRepository repo;
public GraphController(GraphRepository repo) {
this.repo = repo;
}
@GetMapping("/friends/{name}")
public List<String> getFriends(@PathVariable String name) {
return repo.getFriends(name);
}
}
Call:
GET /graph/friends/Alice
Result:
[ "Bob" ]
image quote pre code