CAP Java SDK now provides full support for Spring Boot Developer Tools. The tools contain a bunch of handy development-time features that help you to reduce roundtrip times in local but also remote development scenarios:
Automatic application update on CDS model, configuration, or code changes.
Benefit from cds-maven-plugin integration (goal watch).
Benefit from IDE integrations (Eclipse, IntelliJ IDEA, VS Code).
LiveReload support to trigger an instantaneous browser refresh.
Remote Update: deploy once and upload changes done locally at runtime.
To activate the developer tools, add the following in your development profile:
The CDS model is no longer reloaded every time when opening a new Request Context. Only the outmost Request Context initially loads the CDS model and propagates it to all inner Request Contexts.
The only scenario where the model is still reloaded is when the new Request Context uses a different tenant. This scenario also requires a new ChangeSet Context to be opened in addition. If a ChangeSet Context is opened without an existing Request Context the latter is opened implicitly as well.
The $metadata endpoints now stream the original EDMX directly, without serializing the internal Olingo EDMX representation. This results in a much better performance. It also allows you to use OData dynamic expressions.
Deep Update now supports changing to-one associations to different target entities.
associations can be set to either new (nonexisting) or existing target entities
compositions can only be set to new target entities that are created by the deep update
If a deep update contains data for a to-one association, the data for this association is ignored instead of throwing an exception, when the following applies:
Doesn't cascade the update operation (default).
Data doesn't set the association to another target entity.
Deep Updates over associations cascading both the insert and update operation now support creating new target entities with data containing an InputStream for a LargeString or LargeBinary element. In this case, an additional query is executed to determine if the target entity already exists.
Inserting target entities with key elements of type String and @cds.on.insert: $uuid annotation are now also supported.