Почему вы не используете базу данных?Используйте базу данных файловой системы (например, hsqldb) и слой реляционного отображения объектов.Возможно, вам даже не понадобится писать файл сопоставления любого вида или произвольно делать ваши классы сериализуемыми.
Хранить данные в %APPDATA%/appName
в Windows и, вероятно, ~/.appName
в Linux.User/Library/Application/appName
может работать на Mac.