- Я собираюсь использовать Java-программирование язык, поэтому было бы неплохо, если бы
существовало несколько JAR-файлов с API для доступа к базе данных. - Моя главная цель - избежать необходимости определения сопоставления объектов с таблицами, поскольку я считаю это излишним и считаю определение типа единственным необходимым источником метаданных для постоянства. Все, что больше, - это слишком много, возможно, за исключением некоторых свойств для тонкой настройки (конвертеры, временные поля и т. д.). Итак, если есть какое-то решение на основе JPA/RDBMS, которое могло бы помочь. позвольте мне вообще не касаться схемы базы данных, я так понимаю.
- Графы объектов в моем приложении будут иметь множество отношений, не будет логического объекта верхнего уровня, который объединяет другие подобъекты как полностью содержащиеся свойства. Напротив, моя модель содержит довольно много классов верхнего уровня, на которые будут более или менее напрямую ссылаться другие типы с ассоциациями «один-ко-многим» и «многие-ко-многим». По этой причине я предполагаю, что. полуструктурное хранилище на основе документов и JSON (CouchDB, MongoDB) не подойдет моим потребностям, так как я не смог найти способ легко выразить отношения между объектами (т.е. документами), кроме агрегации. Или я просто ошибаюсь.
- Количество сохраняемых объектов будет «средним», т. е. нет необходимости в особой масштабируемости, функциях обработки больших данных и т. д. Я бы оценил количество объектов. как сотни тысяч.
- Мне нужно, чтобы хранилище было транзакционным, с механизмами фиксации успеха/отката или эквивалентными.
- Эволюция схемы не должна требовать каких-либо операций с базовой схемой хранилища. Поэтому, когда моя модель меняется, все, что я хочу сделать, это получить объект, изменить/пересчитать свойства и сохранить измененный объект. Нет необходимости изменять какие-либо таблицы, столбцы и т. д.
- Мне нужно будет выполнить некоторые запросы на основе свойств объекта. Не совсем так. сложные, с обычными реляционными операторами, но, возможно, и с соединениями ( FROM Book b WHERE b.price < :allowedPrice AND b.author=:author).
- Поскольку он будет использоваться в моем хобби, который в конечном итоге станет коммерческим проектом, я бы хотел, чтобы он был бесплатным для коммерческого использования (в идеале) или с каким-либо неограничительным лицензированием до тех пор, пока он будет использоваться в нерабочее время (и это может быть возраст).
У вас есть предложения или советы?
Подробнее здесь: https://stackoverflow.com/questions/477 ... se-mapping