0) Спасибо за содержательную критику и пожелания. При появлении свободного времени займусь отдельным бранчем для реализации описанных замечаний.
1) Прозрачная сериализация не сделана намеренно. Вы работаете с клонами из кэша и поскольку явно заказываете нужный вам объект, то так же явно и указываете на то, что этот объект вы изменили.
2,3,4) Небольшое добавление касательно сериализации и различных видов полей: в библиотеке специально введена возможность сменить writer and reader. Вы можете написать свои и тем самым сменить формат, можете даже использовать json формат для сериализации. Главное чтобы эти объекты могли быть прочитаны вашей реализацией reader-а. Просто эта статья написана с первой версии.
5) Касательно абстрактного класса скажу следующее: в java множественное наследование от классов не поддерживается, поэтому в любом случае это должен быть интерфейс, а не класс, поскольку модели обычно строятся на основе шаблона Composite и наш абстрактный класс должен быть реализован в самой голове шаблона, это и плюс и минус одновременно. А вот за dataStoreId огромное спасибо, сразу на ум что-то не пришло :(
В остальном Вам никто не мешает самим реализовать этот абстрактный базовый класс.
6) Модели данных по шаблону Composite почти всегда имеют корневые объекты, для них и сделаны эти методы. Но это замечание я учту и в отдельном бранче скорее всего от этих методов избавлюсь.
7) В последних версиях 1.3 и 1.4 реализована возможность выборки объектов по различным полям с помощью интерфейса Predicate.
8) Случайные строки это еще проще, нежели счетчик: UUID.randomUUID().toString().
PS: огромное спасибо что уделили время на анализ и критику по существу. Ваши пожелания будут учтены :)
xstream довольно удобный в плане сериализации объектов и небольшого количества файлов. В этой разработке поддержание сложной структуры файлов с объектами берет на себя сама библиотека. При этом операции добавления и удвления объектов выполняются довольно быстро. В этом и стояла задача при разработке. Решил выложить и написать поскольку может пригодится. Меня она дважды выручала уже.
Полезно было использование в рамках проектов, где не требуется использование баз данных, а хранить данные (объекты) необходимо в открытом формате xml. Вдобавок, довольно удобно располагаются файлы с объектами и открытый формат xml позволяет обрабатывать эти объекты (и файлы) сторонними приложениями.
1) Прозрачная сериализация не сделана намеренно. Вы работаете с клонами из кэша и поскольку явно заказываете нужный вам объект, то так же явно и указываете на то, что этот объект вы изменили.
2,3,4) Небольшое добавление касательно сериализации и различных видов полей: в библиотеке специально введена возможность сменить writer and reader. Вы можете написать свои и тем самым сменить формат, можете даже использовать json формат для сериализации. Главное чтобы эти объекты могли быть прочитаны вашей реализацией reader-а. Просто эта статья написана с первой версии.
5) Касательно абстрактного класса скажу следующее: в java множественное наследование от классов не поддерживается, поэтому в любом случае это должен быть интерфейс, а не класс, поскольку модели обычно строятся на основе шаблона Composite и наш абстрактный класс должен быть реализован в самой голове шаблона, это и плюс и минус одновременно. А вот за dataStoreId огромное спасибо, сразу на ум что-то не пришло :(
В остальном Вам никто не мешает самим реализовать этот абстрактный базовый класс.
6) Модели данных по шаблону Composite почти всегда имеют корневые объекты, для них и сделаны эти методы. Но это замечание я учту и в отдельном бранче скорее всего от этих методов избавлюсь.
7) В последних версиях 1.3 и 1.4 реализована возможность выборки объектов по различным полям с помощью интерфейса Predicate.
8) Случайные строки это еще проще, нежели счетчик: UUID.randomUUID().toString().
PS: огромное спасибо что уделили время на анализ и критику по существу. Ваши пожелания будут учтены :)