Вы должны быть в состоянии использовать встроенную сериализацию Java, чтобы решить эту проблему. Если вы хотите, чтобы он сохранялся автоматически, оберните вашу модель в слой, который сохранит ее для вас. Это даже можно сделать «автоматически» с использованием прокси (java.lang.reflect.Proxy).
Однако я обычно не рекомендую автоматически сохранять состояние, поскольку значения часто связаны между собой. Представьте себе класс прогресса, который отслеживает, на каком уровне вы находитесь, и как далеко вы достигли этого уровня (скажем, 0%, 25%, 50% и 75%).
Теперь вы только что завершили уровень 2, поэтому прогресс должен быть обновлен до "Уровень 3, 0%". Если вы сначала установите уровень, прогресс будет (в течение короткого периода) иметь состояние «Уровень 3, 75%», что неверно, и если вы установите, как далеко сначала вы получите «Уровень 2, 0%». Если программа остановится в любой из этих точек, у пользователя будет неправильное состояние.