powered by simpleCommunicator - 2.0.47     © 2025 Programmizd 02
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / подходы к отражению объектов передачи данных / бизнес-объектов на NoSQL хранилище
4 сообщений из 4, страница 1 из 1
подходы к отражению объектов передачи данных / бизнес-объектов на NoSQL хранилище
    #38343492
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть Rest-сервис / фасад на Java, использующий JAX-RS и JAXB как нижлежащие стандарты.
Какой лучший путь сохранить пришедший экземпляр класса в NoSQL хранилище (возьмем к примеру MongoDB)?
Спрашиваю потому, что использовать предлагаемый api ниже не кажется идеальным:
Код: java
1.
2.
3.
BasicDBObject doc = new BasicDBObject("name", "MongoDB").
                              append("type", dto.getType()).
                              append("count", dto.getCount()));


Подходящим был бы механизм, если я мог бы разметить свой класс JPA-аннотациями и ничего не меняя подсунуть вместо реляционного хранилища хранилище NoSQL.
Впрочем, это тоже кажется странным... Ведь на сторону сервиса приходит уже готовый json, там он сначала десериализуется в java-класс, потом выходит что этот класс нужно заново сериализовать в json чтобы сохранить в таком виде в NoSQL хранилище.
MongoDB позволяет писать строку json напрямую в хранилище.
Вроде бы звучит неплохо, но возникают дополнительные аспекты и волнения по поводу того как обеспечить безопасность, валидацию приходящих данных и их структуры и т.п.

Так как же поступают "конкретные пацаны"?
Какой наилучший способ прокинуть данные от клиента через Rest-сервис на сторону NoSQL хранилища так, чтобы не получился быдло-код в виде заполнения пар ключ-значение, чтобы не пострадала безопасность и прочие аспекты?

Метод фасада Rest-сервиса:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
   /** Сохраняет данные о пользователе.  
    * @param user
    * @exception JAXBException */
   @POST 
   @Path("/saveuser")
   @Produces({MediaType.APPLICATION_JSON+";charset=utf-8"})
   @Consumes({MediaType.APPLICATION_JSON+";charset=utf-8"})
   UserInfo saveUser(UserInfo user) throws JAXBException;


Data Transfer Object:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
@XmlRootElement
public class UserInfo {
   private int id;
   private String login;
   private String firstName;
   private String lastName;
   private String gender;
   private int statusId;
   private String birthdate;
   private String city;
   private String address;
   private DeliveryInfo deliveryInfo;
   public java.util.Collection<ChildInfo> children;
   ...
}
...
Рейтинг: 0 / 0
подходы к отражению объектов передачи данных / бизнес-объектов на NoSQL хранилище
    #38343661
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынник,

Сейчас решаю похожую задачу. Но у меня еще хуже, т.к. база Neo4j, а она сама по себе Restful-служба, и был соблазн вообще общаться с ней напрямую из js-клиента (Ангуляр там или еще чего) без сервера посредника. Но вовремя отговорили.

В данный момент пришел к такому решению, для каждой сущности само собой специальный класс (Users, Buildings, Horses etc), для каждого такого класса сервисный клас, где есть методы add, del, getByName etc, оперирующие экземплярами своих классов-сущностей, все как обычно. Из клиента приходит http-запрос с json'ом, который десериализуется в соответствующий класс (использую Spring MVC, там это лихо делается), ну а дальше делаем с этим классом чего хотим, и в конце концов отдаем для БД. Т.е. json практически полностью скрывается.
...
Рейтинг: 0 / 0
подходы к отражению объектов передачи данных / бизнес-объектов на NoSQL хранилище
    #38344960
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> Но вовремя отговорили
Каков полный перечень аргументов?
>> ну а дальше делаем с этим классом чего хотим, и в конце концов отдаем для БД. Т.е. json практически полностью скрывается
Как именно? Через Spring Data или еще что то?
...
Рейтинг: 0 / 0
подходы к отражению объектов передачи данных / бизнес-объектов на NoSQL хранилище
    #38345091
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынник>> Но вовремя отговорили
Каков полный перечень аргументов?
>> ну а дальше делаем с этим классом чего хотим, и в конце концов отдаем для БД. Т.е. json практически полностью скрывается
Как именно? Через Spring Data или еще что то?

Аргументы здесь

SpringData рассматривается, но пока я не очень поял как мапить свои (немного специфичные) данные.
Поэтому набросал (точнее набрасываю) свой небольшой временный клиент-драйвер-ORM для экспериментов:

все общение с базой происходит через Cypher-запросы, они хранятся в xml'е, затем тот или иной метод сервисного класса (getAll, getById, delById etc) вытягивает нужный Cypher-запрос и формирует готовый json-запрос (Сypher-запрос + параметры в массиве). А ответ нужным образом десиарилизуется (тут у меня возможны варианты) в объект и возвращается вызывающему.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / подходы к отражению объектов передачи данных / бизнес-объектов на NoSQL хранилище
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]