-
Notifications
You must be signed in to change notification settings - Fork 348
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Load aggregates that have a single one-to-m relationship with a single select #1446
Closed
Tracked by
#1445
Labels
in: jdbc
Spring Data JDBC
in: single-query-loading
Everything related to querying aggregates with a single select.
type: enhancement
A general enhancement
Milestone
Comments
schauder
added
type: enhancement
A general enhancement
in: single-query-loading
Everything related to querying aggregates with a single select.
in: jdbc
Spring Data JDBC
labels
Mar 10, 2023
12 tasks
schauder
added a commit
that referenced
this issue
Apr 12, 2023
- Simple Entities - single references - single collections (List, Set, Map) - conversions get applied on reading - integrated for the supported databases and findById and findAll. - integration tests work for Postgres, DB2, MS SqlServer Next Todos: - Fix integration tests with Oracle which fail because the magic join doesn't return all expected rows. - Support for the missing find* methods in SingleSelectDataAccessStrategy See #1446
schauder
added a commit
that referenced
this issue
Jun 15, 2023
Since trivial aggregates consist only of a single table this doesn't make a real difference, but it demonstrates that the general infrastructure works. See #1446
schauder
added a commit
that referenced
this issue
Jul 21, 2023
Single Query Loading loads as the name suggests complete aggregates using a single select. While the ultimate goal is to support this for all aggregates, this commit enables it only for simple aggregate and also only for some operations. A simple aggregate is an aggregate that only reference up to one other entity and does not have embedded entities. The supported operations are those available via `CrudRepository`: `findAll`, `findById`, and `findAllByIds`. Single Query Loading does NOT work with the supported in memory databases H2 and HSQLDB, since these do not properly support windowing functions, which are essential for Single Query Loading. To turn off Single Query Loading call `RelationalMappingContext.setSingleQueryLoadingEnabled(false)`. Closes #1446 See #1450 See #1445
schauder
added a commit
that referenced
this issue
Jul 21, 2023
Single Query Loading loads as the name suggests complete aggregates using a single select. While the ultimate goal is to support this for all aggregates, this commit enables it only for simple aggregate and also only for some operations. A simple aggregate is an aggregate that only reference up to one other entity and does not have embedded entities. The supported operations are those available via `CrudRepository`: `findAll`, `findById`, and `findAllByIds`. Single Query Loading does NOT work with the supported in memory databases H2 and HSQLDB, since these do not properly support windowing functions, which are essential for Single Query Loading. To turn off Single Query Loading call `RelationalMappingContext.setSingleQueryLoadingEnabled(false)`. Closes #1446 See #1450 See #1445
schauder
added a commit
that referenced
this issue
Jul 21, 2023
Single Query Loading loads as the name suggests complete aggregates using a single select. While the ultimate goal is to support this for all aggregates, this commit enables it only for simple aggregate and also only for some operations. A simple aggregate is an aggregate that only reference up to one other entity and does not have embedded entities. The supported operations are those available via `CrudRepository`: `findAll`, `findById`, and `findAllByIds`. Single Query Loading does NOT work with the supported in memory databases H2 and HSQLDB, since these do not properly support windowing functions, which are essential for Single Query Loading. To turn on Single Query Loading call `RelationalMappingContext.setSingleQueryLoadingEnabled(true)`. Closes #1446 See #1450 See #1445
mp911de
changed the title
Load aggregates that have a single one-to-m relationship with a single select.
Load aggregates that have a single one-to-m relationship with a single select
Aug 15, 2023
mp911de
added a commit
that referenced
this issue
Aug 15, 2023
Extract Single Query Loading branching to SingleQueryFallbackDataAccessStrategy. Inline AggregateReaderFactory into SingleQueryDataAccessStrategy. Move CachingSqlGenerator to AggregateReader as caching root. Introduce DataAccessStrategyFactory to encapsulate configuration. Fix Javadoc tag ordering. Remove superfluous MappingContext parameters when Converter is available. Simplify code. Reformat code. Reorder Functions methods. Tweak Javadoc, move composite function into SingleQuerySqlGenerator. See #1446 See #1450 See #1445 Original pull request: #1572
mp911de
added a commit
that referenced
this issue
Aug 15, 2023
schauder
added a commit
that referenced
this issue
Sep 20, 2023
Add github references to tests. See #1446
mp911de
pushed a commit
that referenced
this issue
Sep 27, 2023
Add github references to tests. See #1446
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
in: jdbc
Spring Data JDBC
in: single-query-loading
Everything related to querying aggregates with a single select.
type: enhancement
A general enhancement
This is the first step of implement single-select-querying for Spring Data JDBC.
It will only work for aggregates that have
Single Query Loading will be used for the relevant methods of
CrudRepository
It should be implemented in a way that allows integration in Spring Data R2DBC
The text was updated successfully, but these errors were encountered: