3. Зачем он нужен, если есть ActiveRecord?
Ну в Java же есть...и в .Net
4. ROM стек состоит из:
● Axiom relations
● Gateway proxies with adapters
● ROM relations & mappers
● ROM session with state tracking
5. Axiom
Relational algebra (RA) abstraction (gem)
relation = Axiom::Relation.new(
[[:id, Integer], [:name, String]],
[[1, 'John'], [2, 'Jane']]
)
# now we can do lots of RA operations, like for example restrict and sort
user_tuple = relation.restrict(name: 'Jane').sort_by(:name).to_a.first
user_tuple # => [2, 'Jane']
6. Axiom adapters & gateways
● Adapters — слой логики взаимодействия с ресурсами —
бд, yaml, xml...
● Gateways — прокси слой, который направляет данные
либо сразу в бд, либо к Axiom Relations
7. ROM relations & mappers
● Relation берет данные из Gateway
● Генерит из данных объекты с помощью mapper
8. ROM session with state tracking
● Обертка над ROM relations — перегруженные
CRUD методы
● State tracking, однако ж пока без UoW
9. Еще бед и плюшек
● Нет UoW как такогого
● Нет нормальной поддержки RDBMS
● Нет стандартного интерфейсов между слоями
● Есть конфиг для vagrant
10. Еще бед и плюшек
● Все слои независимы друг от друга (туча
отдельных реп на Github)
● По уверениям, классный генератор SQL и
оптимизатор SQL, но это больше относится к
Axiom