Лучше что-то более явное, чем джавовая сериализация. А так вариантов куча - да хоть protobuf.
Возможно, сохранение состояния лучше положить на плечи пользовательского кода, если он эти объекты сам представляет.
Понял, ну как раз этого я хочу избежать. Ибо какая-то часть этих объектов в либе (например 30 шт), а какую-то часть создает пользователь (10 шт). И если он захочет сделать свою имплементацию хранилища, то ему нужно будет реализовать 40 имлементация хранения для конкретного хранилища