[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["很难理解","hardToUnderstand","thumb-down"],["信息或示例代码不正确","incorrectInformationOrSampleCode","thumb-down"],["没有我需要的信息/示例","missingTheInformationSamplesINeed","thumb-down"],["翻译问题","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-09-03。"],[],[],null,["# Integrate Spanner with Spring Data JDBC (GoogleSQL)\n\n[Spring Data JDBC](https://spring.io/projects/spring-data-jdbc), part of the larger Spring\nData family, makes it easier to implement JDBC based repositories in your\napplication. It adds an abstraction layer between your application and your\ndatabase that makes your application easier to port from one database system to\nanother.\n\nSet up Spring Data JDBC for Spanner GoogleSQL-dialect databases\n---------------------------------------------------------------\n\nYou can integrate Spanner GoogleSQL-dialect databases with Spring Data JDBC\nby adding a dialect for Spanner GoogleSQL to your\napplication.\n\n### Dialect configuration\n\nSpring Data JDBC selects the database dialect it uses based on\nthe JDBC driver that has been configured as a data source in Spring Data.\nYou must add an additional dialect provider to your application to instruct\nSpring Data JDBC to use the GoogleSQL dialect when the\nSpanner JDBC driver is used: \n\n public class SpannerDialectProvider implements DialectResolver.JdbcDialectProvider {\n @Override\n public Optional\u003cDialect\u003e getDialect(JdbcOperations operations) {\n return Optional.ofNullable(\n operations.execute((ConnectionCallback\u003cDialect\u003e) SpannerDialectProvider::getDialect));\n }\n\n @Nullable\n private static Dialect getDialect(Connection connection) throws SQLException {\n DatabaseMetaData metaData = connection.getMetaData();\n String name = metaData.getDatabaseProductName().toLowerCase(Locale.ENGLISH);\n if (name.contains(\"spanner\")) {\n return SpannerDialect.INSTANCE;\n }\n return null;\n }\n }\n\nThis dialect provider must be added to the `spring.factories` file in your\napplication: \n\n org.springframework.data.jdbc.repository.config.DialectResolver$JdbcDialectProvider=org.springframework.data.jdbc.repository.config.DialectResolver.DefaultDialectProvider,com.google.cloud.spanner.sample.SpannerDialectProvider\n\nTo see an example, refer to the full\n[working sample application](https://github.com/googleapis/java-spanner-jdbc/tree/main/samples/spring-data-jdbc/googlesql) on GitHub.\n\n### Dependencies\n\nIn your project, add Apache Maven dependencies for\n[Spring Data JDBC](https://spring.io/projects/spring-data-jdbc) and the\n[Spanner JDBC driver](https://github.com/googleapis/java-spanner-jdbc). \n\n \u003cdependencies\u003e\n \u003c!-- Spring Data JDBC --\u003e\n \u003cdependency\u003e\n \u003cgroupId\u003eorg.springframework.boot\u003c/groupId\u003e\n \u003cartifactId\u003espring-boot-starter-data-jdbc\u003c/artifactId\u003e\n \u003c/dependency\u003e\n\n \u003c!-- Spanner JDBC driver --\u003e\n \u003cdependency\u003e\n \u003cgroupId\u003ecom.google.cloud\u003c/groupId\u003e\n \u003cartifactId\u003egoogle-cloud-spanner-jdbc\u003c/artifactId\u003e\n \u003c/dependency\u003e\n \u003cdependencies\u003e\n\n### Data source configuration\n\nConfigure `application.properties` to use the Spanner JDBC driver and\nconnect to a Spanner GoogleSQL-dialect database. \n\n spanner.project=my-project\n spanner.instance=my-instance\n spanner.database=spring-data-jdbc\n\n spring.datasource.driver-class-name=com.google.cloud.spanner.jdbc.JdbcDriver\n spring.datasource.url=jdbc:cloudspanner:/projects/${spanner.project}/instances/${spanner.instance}/databases/${spanner.database}\n\nFull Sample Application\n-----------------------\n\nTo try this integration with a sample application, see\n[Spring Data JDBC Sample Application with Spanner\nGoogleSQL](https://github.com/googleapis/java-spanner-jdbc/tree/main/samples/spring-data-jdbc/googlesql).\n\nWhat's next\n-----------\n\n- Learn more about [Spring Data JDBC](https://spring.io/projects/spring-data-jdbc).\n- [File a GitHub issue](https://github.com/googleapis/java-spanner-jdbc/issues) to report a bug or ask a question about the Spanner JDBC driver."]]