|
подходы к отражению объектов передачи данных / бизнес-объектов на NoSQL хранилище
|
|||
---|---|---|---|
#18+
Есть Rest-сервис / фасад на Java, использующий JAX-RS и JAXB как нижлежащие стандарты. Какой лучший путь сохранить пришедший экземпляр класса в NoSQL хранилище (возьмем к примеру MongoDB)? Спрашиваю потому, что использовать предлагаемый api ниже не кажется идеальным: Код: java 1. 2. 3.
Подходящим был бы механизм, если я мог бы разметить свой класс JPA-аннотациями и ничего не меняя подсунуть вместо реляционного хранилища хранилище NoSQL. Впрочем, это тоже кажется странным... Ведь на сторону сервиса приходит уже готовый json, там он сначала десериализуется в java-класс, потом выходит что этот класс нужно заново сериализовать в json чтобы сохранить в таком виде в NoSQL хранилище. MongoDB позволяет писать строку json напрямую в хранилище. Вроде бы звучит неплохо, но возникают дополнительные аспекты и волнения по поводу того как обеспечить безопасность, валидацию приходящих данных и их структуры и т.п. Так как же поступают "конкретные пацаны"? Какой наилучший способ прокинуть данные от клиента через Rest-сервис на сторону NoSQL хранилища так, чтобы не получился быдло-код в виде заполнения пар ключ-значение, чтобы не пострадала безопасность и прочие аспекты? Метод фасада Rest-сервиса: Код: java 1. 2. 3. 4. 5. 6. 7. 8.
Data Transfer Object: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2013, 12:35 |
|
подходы к отражению объектов передачи данных / бизнес-объектов на NoSQL хранилище
|
|||
---|---|---|---|
#18+
Роман Дынник, Сейчас решаю похожую задачу. Но у меня еще хуже, т.к. база Neo4j, а она сама по себе Restful-служба, и был соблазн вообще общаться с ней напрямую из js-клиента (Ангуляр там или еще чего) без сервера посредника. Но вовремя отговорили. В данный момент пришел к такому решению, для каждой сущности само собой специальный класс (Users, Buildings, Horses etc), для каждого такого класса сервисный клас, где есть методы add, del, getByName etc, оперирующие экземплярами своих классов-сущностей, все как обычно. Из клиента приходит http-запрос с json'ом, который десериализуется в соответствующий класс (использую Spring MVC, там это лихо делается), ну а дальше делаем с этим классом чего хотим, и в конце концов отдаем для БД. Т.е. json практически полностью скрывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2013, 13:49 |
|
подходы к отражению объектов передачи данных / бизнес-объектов на NoSQL хранилище
|
|||
---|---|---|---|
#18+
>> Но вовремя отговорили Каков полный перечень аргументов? >> ну а дальше делаем с этим классом чего хотим, и в конце концов отдаем для БД. Т.е. json практически полностью скрывается Как именно? Через Spring Data или еще что то? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2013, 12:13 |
|
подходы к отражению объектов передачи данных / бизнес-объектов на NoSQL хранилище
|
|||
---|---|---|---|
#18+
Роман Дынник>> Но вовремя отговорили Каков полный перечень аргументов? >> ну а дальше делаем с этим классом чего хотим, и в конце концов отдаем для БД. Т.е. json практически полностью скрывается Как именно? Через Spring Data или еще что то? Аргументы здесь SpringData рассматривается, но пока я не очень поял как мапить свои (немного специфичные) данные. Поэтому набросал (точнее набрасываю) свой небольшой временный клиент-драйвер-ORM для экспериментов: все общение с базой происходит через Cypher-запросы, они хранятся в xml'е, затем тот или иной метод сервисного класса (getAll, getById, delById etc) вытягивает нужный Cypher-запрос и формирует готовый json-запрос (Сypher-запрос + параметры в массиве). А ответ нужным образом десиарилизуется (тут у меня возможны варианты) в объект и возвращается вызывающему. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2013, 13:09 |
|
|
start [/forum/topic.php?fid=48&fpage=12&tid=1856941]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 238ms |
total: | 347ms |
0 / 0 |