У нас есть Java-приложение среднего размера, которое нуждается в некотором рефакторинге.
Мы рассматриваем возможность перехода на JRuby on Rails. В основном из-за производительности, которую предлагает Ruby on Rails, и из-за множества существующих плагинов, которые будут заново реализовывать веб-логику.
Однако большая часть приложения должна оставаться на Java, мы не хотим переписывать всю бизнес-логику (тем более, что она использует многие технологии Java, такие как RMI).
Ключевым моментом нашего рефакторинга является очистка нашего управления базой данных, которое в настоящее время представляет собой сочетание закодированных вручную операций SQL и некоторых объектов, хранящихся в db4o.
Из JRuby мы можем вызвать любой устаревший код Java. Здорово!
Однако многие плагины Ruby on Rails предполагают использование ActiveRecord для управления базой данных. Доступ к данным ActiveRecord из Java кажется нетривиальным.
Какая стратегия лучше всего подходит для управления базой данных между JRuby on Rails и устаревшим кодом Java?
- Мы могли бы использовать db4o для всего, но потеряли бы преимущества некоторых плагинов Ruby on Rails и должны были бы управлять объектами «вручную» на стороне Ruby.
- Мы могли бы использовать ActiveRecord для всего и определить какое-то избыточное отображение на стороне Java. Какая стратегия будет лучшей?
- Мы будем использовать технологию Java ORM (Hibernate, Cayenne?), а затем отобразить модель в ActiveRecord. Чем эта идея отличается от предыдущей?
- Можем ли мы сотворить немного волшебства, используя Jruby 1.4, bet_java!?
Что вы думаете?