You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/main/antora/modules/ROOT/pages/jdbc/events.adoc
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -40,7 +40,7 @@ class PersonLoadListener extends AbstractRelationalEventListener<Person> {
40
40
}
41
41
----
42
42
43
-
The following table describes the available events.For more details about the exact relation between process steps see the link:#jdbc.entity-callbacks[description of available callbacks] which map 1:1 to events.
43
+
The following table describes the available events.For more details about the exact relation between process steps see the link:#jdbc.entity-callbacks[description of available callbacks] which map 1:1 to events.
Copy file name to clipboardExpand all lines: src/main/antora/modules/ROOT/pages/jdbc/getting-started.adoc
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,7 +21,7 @@ Spring Data JDBC includes direct support for the following databases:
21
21
* Microsoft SQL Server
22
22
* MySQL
23
23
* Oracle
24
-
* Postgres
24
+
* PostgreSQL
25
25
26
26
If you use a different database then your application won’t start up.
27
27
The <<jdbc.dialects,dialect>> section contains further detail on how to proceed in such case.
@@ -33,7 +33,7 @@ To create a Spring project in STS:
33
33
34
34
. Go to File -> New -> Spring Template Project -> Simple Spring Utility Project, and press Yes when prompted.
35
35
Then enter a project and a package name, such as `org.spring.jdbc.example`.
36
-
. Add the following to the `pom.xml` files `dependencies` element:
36
+
. Add the following to the `pom.xml` file `dependencies` element:
37
37
+
38
38
[source,xml,subs="+attributes"]
39
39
----
@@ -77,7 +77,7 @@ The repository is also https://repo.spring.io/milestone/org/springframework/data
77
77
78
78
Spring Data JDBC does little to no logging on its own.
79
79
Instead, the mechanics of `JdbcTemplate` to issue SQL statements provide logging.
80
-
Thus, if you want to inspect what SQL statements are run, activate logging for Spring's {spring-framework-docs}/data-access.html#jdbc-JdbcTemplate[`NamedParameterJdbcTemplate`] or https://www.mybatis.org/mybatis-3/logging.html[MyBatis].
80
+
Thus, if you want to inspect what SQL statements are run, activate logging for Spring's {spring-framework-docs}/data-access/jdbc/core.html#jdbc-NamedParameterJdbcTemplate[`NamedParameterJdbcTemplate`] or https://www.mybatis.org/mybatis-3/logging.html[MyBatis].
81
81
82
82
You may also want to set the logging level to `DEBUG` to see some additional information.
83
83
To do so, edit the `application.properties` file to have the following content:
@@ -125,8 +125,8 @@ class ApplicationConfig extends AbstractJdbcConfiguration {
125
125
}
126
126
----
127
127
128
-
<1> `@EnableJdbcRepositories` creates implementations for interfaces derived from `Repository`
129
-
<2> javadoc:org.springframework.data.jdbc.repository.config.AbstractJdbcConfiguration[] provides various default beans required by Spring Data JDBC
128
+
<1> `@EnableJdbcRepositories` creates implementations for interfaces derived from `Repository`.
129
+
<2> javadoc:org.springframework.data.jdbc.repository.config.AbstractJdbcConfiguration[] provides various default beans required by Spring Data JDBC.
130
130
<3> Creates a `DataSource` connecting to a database.
131
131
This is required by the following two bean methods.
132
132
<4> Creates the `NamedParameterJdbcOperations` used by Spring Data JDBC to access the database.
@@ -158,13 +158,13 @@ Alternatively, you can implement your own `Dialect`.
158
158
159
159
[TIP]
160
160
====
161
-
Dialects are resolved by javadoc:org.springframework.data.jdbc.core.dialect.DialectResolver[] from a `JdbcOperations` instance, typically by inspecting `Connection.getMetaData()`.
162
-
+ You can let Spring auto-discover your javadoc:org.springframework.data.jdbc.core.dialect.JdbcDialect[] by registering a class that implements `org.springframework.data.jdbc.core.dialect.DialectResolver$JdbcDialectProvider` through `META-INF/spring.factories`.
161
+
Dialects are resolved by javadoc:org.springframework.data.jdbc.core.dialect.DialectResolver[] from a `JdbcOperations` instance, typically by inspecting `Connection.getMetaData()`. +
162
+
You can let Spring auto-discover your javadoc:org.springframework.data.jdbc.core.dialect.JdbcDialect[] by registering a class that implements `org.springframework.data.jdbc.core.dialect.DialectResolver$JdbcDialectProvider` through `META-INF/spring.factories`.
163
163
`DialectResolver` discovers dialect provider implementations from the class path using Spring's `SpringFactoriesLoader`.
164
164
To do so:
165
165
166
166
. Implement your own `Dialect`.
167
167
. Implement a `JdbcDialectProvider` returning the `Dialect`.
168
168
. Register the provider by creating a `spring.factories` resource under `META-INF` and perform the registration by adding a line +
169
-
`org.springframework.data.jdbc.core.dialect.DialectResolver$JdbcDialectProvider`=<fully qualified name of your JdbcDialectProvider>`
169
+
`org.springframework.data.jdbc.core.dialect.DialectResolver$JdbcDialectProvider`=<fully qualified name of your JdbcDialectProvider>`.
You should not include attributes in your entities to hold the actual value of a back reference, nor of the key column of maps or lists.
138
-
If you want these value to be available in your domain model we recommend to do this in a `AfterConvertCallback` and store the values in transient values.
138
+
If you want these values to be available in your domain model we recommend to do this in an `AfterConvertCallback` and store the values in transient values.
139
139
140
140
:mapped-collection: true
141
141
:embedded-entities: true
@@ -214,7 +214,7 @@ If you are migrating from an older version of Spring Data JDBC and have `Abstrac
214
214
[TIP]
215
215
====
216
216
If you want to rely on https://spring.io/projects/spring-boot[Spring Boot] to bootstrap Spring Data JDBC, but still want to override certain aspects of the configuration, you may want to expose beans of that type.
217
-
For custom conversions you may e.g. choose to register a bean of type `JdbcCustomConversions` that will be picked up the by the Boot infrastructure.
217
+
For custom conversions you may e.g. choose to register a bean of type `JdbcCustomConversions` that will be picked up by the Boot infrastructure.
218
218
To learn more about this please make sure to read the Spring Boot https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#data.sql.jdbc[Reference Documentation].
The query is derived by parsing the method name for constraints that can be concatenated with `And` and `Or`.
37
37
Thus, the method name results in a query expression of `SELECT … FROM person WHERE firstname = :firstname`.
38
38
<2> Use `Pageable` to pass offset and sorting parameters to the database.
39
-
<3> Return a `Slice<Person>`.Selects `LIMIT+1` rows to determine whether there's more data to consume. `ResultSetExtractor` customization is not supported.
39
+
<3> Return a `Slice<Person>`.Selects `LIMIT+1` rows to determine whether there's more data to consume. `ResultSetExtractor` customization is not supported.
40
40
<4> Run a paginated query returning `Page<Person>`.Selects only data within the given page bounds and potentially a count query to determine the total count. `ResultSetExtractor` customization is not supported.
41
41
<5> Find a single entity for the given criteria.
42
42
It completes with `IncorrectResultSizeDataAccessException` on non-unique results.
@@ -143,7 +143,7 @@ NOTE: Query derivation is limited to properties that can be used in a `WHERE` cl
143
143
144
144
The JDBC module supports defining a query manually as a String in a `@Query` annotation or as named query in a property file.
145
145
146
-
Deriving a query from the name of the method is is currently limited to simple properties, that means properties present in the aggregate root directly.
146
+
Deriving a query from the name of the method is currently limited to simple properties, that means properties present in the aggregate root directly.
147
147
Also, only select queries are supported by this approach.
For converting the query result into entities the same `RowMapper` is used by default as for the queries Spring Data JDBC generates itself.
165
165
The query you provide must match the format the `RowMapper` expects.
166
166
Columns for all properties that are used in the constructor of an entity must be provided.
167
-
Columns for properties that get set via setter, wither or field access are optional.
167
+
Columns for properties that get set via setter or field access are optional.
168
168
Properties that don't have a matching column in the result will not be set.
169
169
The query is used for populating the aggregate root, embedded entities and one-to-one relationships including arrays of primitive types which get stored and loaded as SQL-array-types.
170
170
Separate queries are generated for maps, lists, sets and arrays of entities.
171
171
172
-
Properties one-to-one relationships must have there name prefixed by the name of the relationship plus `_`.
172
+
Properties one-to-one relationships must have their name prefixed by the name of the relationship plus `_`.
173
173
For example if the `User` from the example above has an `address` with the property `city` the column for that `city` must be labeled `address_city`.
174
174
175
175
@@ -190,7 +190,7 @@ Person findWithSpEL(PersonRef person);
190
190
----
191
191
192
192
This can be used to access members of a parameter, as demonstrated in the example above.
193
-
For more involved use cases an `EvaluationContextExtension` can be made available in the application context, which in turn can make any object available in to the SpEL.
193
+
For more involved use cases an `EvaluationContextExtension` can be made available in the application context, which in turn can make any object available in the SpEL.
194
194
195
195
The other variant can be used anywhere in the query and the result of evaluating the query will replace the expression in the query string.
Copy file name to clipboardExpand all lines: src/main/antora/modules/ROOT/pages/jdbc/schema-support.adoc
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -73,12 +73,12 @@ databaseChangeLog:
73
73
----
74
74
75
75
Column types are computed from an object implementing the `SqlTypeMapping` strategy interface.
76
-
Nullability is inferred from the type and set to `false` if a property type use primitive Java types.
76
+
Nullability is inferred from the type and set to `false` if a property type uses primitive Java types.
77
77
78
78
Schema support can assist you throughout the application development lifecycle.
79
79
In differential mode, you provide an existing Liquibase `Database` to the schema writer instance and the schema writer compares existing tables to mapped entities and derives from the difference which tables and columns to create/to drop.
80
80
By default, no tables and no columns are dropped unless you configure `dropTableFilter` and `dropColumnFilter`.
81
-
Both filter predicate provide the table name respective column name so your code can computer which tables and columns can be dropped.
81
+
Both filter predicates provide the table name respective column name so your code can compute which tables and columns can be dropped.
Copy file name to clipboardExpand all lines: src/main/antora/modules/ROOT/pages/jdbc/transactions.adoc
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -86,7 +86,7 @@ Thus, the method is with the `readOnly` flag set to `false`.
86
86
NOTE: It is highly recommended to make query methods transactional.
87
87
These methods might execute more than one query in order to populate an entity.
88
88
Without a common transaction Spring Data JDBC executes the queries in different connections.
89
-
This may put excessive strain on the connection pool and might even lead to dead locks when multiple methods request a fresh connection while holding on to one.
89
+
This may put excessive strain on the connection pool and might even lead to deadlocks when multiple methods request a fresh connection while holding on to one.
90
90
91
91
NOTE: It is definitely reasonable to mark read-only queries as such by setting the `readOnly` flag.
92
92
This does not, however, act as a check that you do not trigger a manipulating query (although some databases reject `INSERT` and `UPDATE` statements inside a read-only transaction).
0 commit comments