Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Выбор фреймворка ORM . XML <-> java + DB <-> java


Автор: DmitryPS 3.6.2008, 16:21
Всем доброго времени суток.
Нужен совет
История вполне обычна. Пришло время расширять функционал проекта.

Сразу уточню — проект реалтаймовский.
Существует необходимость маппить объекты проекта двумя путями:
XML <-> java
DB <-> java
Принцип работы с данными.
1. Запуск системы. Инициализируется кэш объектов. Данные берутся из базы.
2. С определенной периодичностью кэш сбрасывается в базу. Т.е. однонаправленная синхронизация.
3. Так же периодически возникает необходимость маппить обекты в/из XML . (web сервисы)

В данный момент маппинг реализован в обертках для объектов системы. Быстро, но поддерживать и расширять такой код тяжко.
Изобретать велосипед и писать своей фреймворк желания никакого нет.
Поэтому хочется чего то готового
Умеющего делать XML <-> java + DB <-> java. Желательно с описанием маппирования в аннотациях.

На первый взгляд, выбор огромен. http://java-source.net/open-source/persistence
Hibernate и JPA не катят на мой взгляд, Они для другого класса задач.

Может что посоветуете? 

Автор: powerOn 3.6.2008, 22:28
Цитата(DmitryPS @  3.6.2008,  17:21 Найти цитируемый пост)
XML <-> java

Думаю что JAXB поможет.

Цитата(DmitryPS @  3.6.2008,  17:21 Найти цитируемый пост)
На первый взгляд, выбор огромен. http://java-source.net/open-source/persistence
Hibernate и JPA не катят на мой взгляд, Они для другого класса задач.


Чем JPA не угодил?

Автор: COVD 3.6.2008, 22:49
Цитата

Сразу уточню — проект реалтаймовский.

А что это значит ( просто интересно, для ликбеза, потому что этим термином пользуются достаточно широко. Одно из определений реалтайма - когда система реагирует на событие с фиксированной известной задержкой.  ) ?

Автор: DmitryPS 4.6.2008, 09:16
Цитата(powerOn @  3.6.2008,  22:28 Найти цитируемый пост)

Думаю что JAXB поможет.


Как вариант, но хотелось бы, что бы один фреймворк решал задачи маппирования  XML <-> java и DB <-> java


Цитата(powerOn @  3.6.2008,  22:28 Найти цитируемый пост)
Чем JPA не угодил? 


Не угодил тем:
 1. Не умеет работать с XML 
 2. Используем собственный кеш объектов заточенный на быстрый поиск. По сути от JPA нужно только маппирование. SQL запросы для выборок объектов не нужны.
 3. Синхронизация односторонняя. Кэш периодически сохраняется в базу. Т.е. если кто то что то делает в базе, то нам эти изменения неинтересны.


Цитата(COVD @  3.6.2008,  22:49 Найти цитируемый пост)
А что это значит ( просто интересно, для ликбеза, потому что этим термином пользуются достаточно широко. Одно из определений реалтайма - когда система реагирует на событие с фиксированной известной задержкой.  ) ?


Ваше определение верно.  
Не до конца корректно сформулировал определение нашей системы.
Она реалтаймовская и высокопроизводительная, т.е. верхняя граница времени выполнения запроса в системе жестко задана и достаточно мала . 

Автор: ecologist 4.6.2008, 09:43
Если есть критичность по времени, то может быть не надо вообще использовать фреймворки ?
В конце концов написать простые классы для работы с таблицами, повесить транзакции - и не мучаться.

Автор: AlexeyVorotnikov 4.6.2008, 10:10
Цитата(DmitryPS @  4.6.2008,  10:16 Найти цитируемый пост)
хотелось бы, что бы один фреймворк решал задачи маппирования  XML <-> java и DB <-> java

Попробуйте посмотреть в сторону http://www.castor.org/. Вроде, они там обещают всё в одном флаконе.

Автор: DmitryPS 4.6.2008, 10:29
Цитата(ecologist @  4.6.2008,  09:43 Найти цитируемый пост)
Если есть критичность по времени, то может быть не надо вообще использовать фреймворки ?
В конце концов написать простые классы для работы с таблицами, повесить транзакции - и не мучаться.



Сейчас именно такая ситуация. Код пухнет + тяжело поддерживать.
Опять же есть требование маппирования в/из XML. Т.е придется писать "простые классы для работы с" уже XML.

Скорость записи в базу данных не такая принципиальная. Сохранение кэша в базу происходит с определенной периодичностью, а не после каждой изменения объекта, связанного с базой. Думаю проапдейтить 1000 записей раз в 10 секунд - фреймворка хватит.
 
Основное требование, быстрый поиск. Поиск по объектам происходит не в базе , а в памяти. Структура кэша специально заточена под поиск.



Цитата(AlexeyVorotnikov @  4.6.2008,  10:10 Найти цитируемый пост)

Попробуйте посмотреть в сторону The Castor Project. Вроде, они там обещают всё в одном флаконе. 


Рассматриваю как вариант. Не ясно насколько данный проект живет честно говоря. Мало о нем известно.

Автор: w1nd 4.6.2008, 11:46
BEA Liquid data - то, что доктор прописал. Но если словами "проект реалтаймовский" вы хотите указать на требования к производительности системы, то с такими аппетитами (xml <-> java | db <-> java) забудьте об этом сразу.

Цитата(DmitryPS @  4.6.2008,  09:16 Найти цитируемый пост)
Синхронизация односторонняя. Кэш периодически сохраняется в базу. Т.е. если кто то что то делает в базе, то нам эти изменения неинтересны.

А двусторонней при работе с БД не бывает и быть не может. Точнее, можно сделать, но пришибленные показатели производительности (ввиду выше означенных аппетитов) и вовсе распластаются под плинтусом. Не говоря уже о требованиях к железу.

Автор: DmitryPS 4.6.2008, 12:23
Цитата(w1nd @  4.6.2008,  11:46 Найти цитируемый пост)
BEA Liquid data - то, что доктор прописал. Но если словами "проект реалтаймовский" вы хотите указать на требования к производительности системы, то с такими аппетитами (xml <-> java | db <-> java) забудьте об этом сразу.


Может не до конца четко описал суть задачи в первых постах.Повторюсь.

Скорость записи в базу данных не такая принципиальная. Сохранение кэша в базу происходит с определенной периодичностью, а не после каждого изменения объекта, связанного с базой. Думаю, проапдейтить 1000 записей раз в 10 секунд - фреймворка хватит.
 
Основное требование, быстрый поиск. Поиск по объектам происходит не в базе , а в памяти. Структура кэша специально заточена под быстрый поиск.

Ядро системы работает с кэшем. А фоновые потоки выполняют  маппирование (xml <-> java | db <-> java) . 
Сохраняют кэш в базу и организуют взаимодействие с web консолью

Автор: DmitryPS 10.6.2008, 13:57
Всем доброго времени суток.

Закрою вопрос

Универсального фреймворка не нашел.
Остановился на связке: hibernate + jaxb.

Исходя из того , что.

1. Оба фреймворка известные, простые для внедрения, помирать не собираются.
2. Поддерживают аннотации

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)