Right, we are currently using the inheritance hierarchy for "infrastructural" concerns (e.g. redis vs. in-memory) rather than domain concerns. Perhaps refactoring to make full use of the Spring Data Repositories would allow us to do both (since that enables use of interfaces rather than base classes to trigger much of the functionality).