Events do not reach projections when not using AxonServer

I’m trying to get acquainted with AxonIQ. Got the basic Giftcard demo working. Then tried to switch to an Oracle database as event store instead of AxonServer. Got this working, but…
When running the demo app with just this change applied (added a getDataSource() method in AxonConfig and command line option
-Daxon.axonserver.enabled=false), it works find as long as the app is running. When restarting the app, the list of cards is empty. When issuing a new card with an ID previously used, it raises an error, indicating the card is present in its aggregate. Events seem to be recorded properly in the event store table.

What goes wrong here?

The gift card demo does not persist projections. Adding a data source to the application means that the events and token store persist in the database, but the projections are not.

On a restart, the projections are not rebuilt, as the token store contains the token of the last processed event (from the previous run). To solve this, you can either update the gift card demo application to persist the projections (updating the CardSummaryProjection class), or configure an InMemoryTokenStore in AxonConfig (this will ensure that the projections are rebuilt).