Spring Data JDBC, חלק מהמשפחה הגדולה יותר של Spring Data, מאפשרת להטמיע בקלות מאגרי מידע מבוססי JDBC באפליקציה. הוא מוסיף שכבת הפשטה בין האפליקציה לבין מסד הנתונים, וכך מקל על העברת האפליקציה ממערכת מסד נתונים אחת לאחרת.
הגדרה של Spring Data JDBC למסדי נתונים של Spanner GoogleSQL-dialect
אתם יכולים לשלב מסדי נתונים של Spanner GoogleSQL עם Spring Data JDBC על ידי הוספת ניב של Spanner GoogleSQL לאפליקציה.
הגדרת הדיאלקט
Spring Data JDBC בוחר את הניב של מסד הנתונים שבו הוא משתמש על סמך מנהל ההתקן של JDBC שהוגדר כמקור נתונים ב-Spring Data. כדי להנחות את Spring Data JDBC להשתמש בניב GoogleSQL כשמשתמשים במנהל ההתקן Spanner JDBC, צריך להוסיף לספק הניב הנוסף לאפליקציה:
public class SpannerDialectProvider implements DialectResolver.JdbcDialectProvider {
@Override
public Optional<Dialect> getDialect(JdbcOperations operations) {
return Optional.ofNullable(
operations.execute((ConnectionCallback<Dialect>) SpannerDialectProvider::getDialect));
}
@Nullable
private static Dialect getDialect(Connection connection) throws SQLException {
DatabaseMetaData metaData = connection.getMetaData();
String name = metaData.getDatabaseProductName().toLowerCase(Locale.ENGLISH);
if (name.contains("spanner")) {
return SpannerDialect.INSTANCE;
}
return null;
}
}
צריך להוסיף את ספק הניב הזה לקובץ spring.factories באפליקציה:
org.springframework.data.jdbc.repository.config.DialectResolver$JdbcDialectProvider=org.springframework.data.jdbc.repository.config.DialectResolver.DefaultDialectProvider,com.google.cloud.spanner.sample.SpannerDialectProvider
כדי לראות דוגמה, אפשר לעיין באפליקציה לדוגמה שעובדת המלאה ב-GitHub.
תלויות
בפרויקט, מוסיפים תלות ב-Apache Maven עבור Spring Data JDBC ומנהל ההתקן Spanner JDBC.
<dependencies>
<!-- Spring Data JDBC -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<!-- Spanner JDBC driver -->
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-spanner-jdbc</artifactId>
</dependency>
<dependencies>
הגדרת מקור נתונים
מגדירים את application.properties כך שישתמש במנהל ההתקן Spanner JDBC ויתחבר למסד נתונים של Spanner GoogleSQL-dialect.
spanner.project=my-project
spanner.instance=my-instance
spanner.database=spring-data-jdbc
spring.datasource.driver-class-name=com.google.cloud.spanner.jdbc.JdbcDriver
spring.datasource.url=jdbc:cloudspanner:/projects/${spanner.project}/instances/${spanner.instance}/databases/${spanner.database}
אפליקציה לדוגמה מלאה
כדי לנסות את השילוב הזה עם אפליקציה לדוגמה, אפשר לעיין במאמר Spring Data JDBC Sample Application with Spanner GoogleSQL.
המאמרים הבאים
- מידע נוסף על Spring Data JDBC
- מדווחים על בעיה ב-GitHub כדי לדווח על באג או לשאול שאלה לגבי מנהל ההתקן של Spanner JDBC.