Независимость доменного слоя

В своей книге "Чистая Архитектура" Роберт Мартин пишет, что бизнес-логика не должна зависеть от базы данных. Иными словами доменный слой должен быть независим от слоя базы данных.

Но как это реализовать в классическом Spring Boot приложении с модулем Spring Data?

Обычно в Spring Data создается интерфейс репозитория под каждую сущность. И поскольку это лишь интерфейс, реализации он не содержит, а значит, теоретически может быть отнесен к доменному слою.

На практике он содержит наследования и аннотации, относящиеся к слою базы данных, а значит и сам привязан к базе данных. Более того, если мы захотим сменить базу данных или вовсе избавиться от неё, заменив, например, файловой системой, то этот интерфейс должен быть изменен, а это противоречит принципу открытости/закрытости.

Аналогичная ситуация происходит с сущностями, для которых создаются репозитории, и которые используются в бизнес логике.

Конечно можно использовать принцип инверсии зависимостей, но кажется это приведет к многочисленному дублированию кода на разных слоях.

Как бы не пытался разрешить эту ситуацию - не удается. Стоит ли настолько детально чистить архитектуру? И как добиться чистоты в условиях Spring Data?