Datastax 4.6 Драйвер Java Object mapper async / batch query

Драйвер Datastax java версии 4.6, я не вижу поддержки в сопоставлении объектов для пакетных / асинхронных запросов

Есть ли способ обхода этого? Любая причина, по которой objectmapper не поддерживает пакетную / асинхронную обработку?

В предыдущей версии был MappingManager, с помощью которого поддерживались пакетные и асинхронные запросы.


person user1228785    schedule 24.07.2020    source источник


Ответы (1)


Все регулируется типом возвращаемого значения заявленной функции:

  • Для асинхронных версий ищите документацию по конкретной аннотации, например, @ Insert или @ Select и т. д. Но во всех случаях это регулируется типом возвращаемого значения объявленной функции. Чтобы получить асинхронную версию, вам нужно объявить функцию с типом возврата CompletionStage<SomeClass> или CompletableFuture<SomeClass>
  • Пакетная обработка аналогична - вы объявляете функцию с типом возврата BoundStatement и помещаете этот связанный оператор в пакет, который выполняется через session.execute или session.executeAsync.
person Alex Ott    schedule 24.07.2020
comment
Есть ли какой-нибудь образец кода / блог / пример, на который я могу сослаться? Я предполагаю, что пакетную и асинхронную обработку можно выполнить с помощью объектного картографа. Один в документации был не так понятен для меня сначала - person user1228785; 24.07.2020
comment
Я не готов использовать примеры ... может, загляните на GitHub.com/Datastax-Examples? Как я уже писал, async сделать легко - просто настройте тип возвращаемого значения функции в объявлении интерфейса ... - person Alex Ott; 24.07.2020
comment
Спасибо .. Async я получил .. Пакетная обработка, позвольте мне особенно проверить, как это сделать с objectmapper. - person user1228785; 24.07.2020
comment
IIRC, в предыдущей версии было то же самое - вы получаете связанный оператор, выводите его в пакетный оператор и выполняете - person Alex Ott; 24.07.2020
comment
О, вот так мне нужно написать подготовленный оператор ... Я надеялся на версию сохранения, в которой я могу передать список сущностей - person user1228785; 24.07.2020
comment
Нет. Вам просто нужно объявить версию Insert или Update в DAO с BoundStatement в качестве возвращаемого типа и поместить результат этого вызова в batch.add. Просто заверните его в цикл над своим списком - person Alex Ott; 24.07.2020
comment
Понятно, позвольте мне попробовать это .. 1 последний вопрос. Если я выполнил Mapped UDT, который является POJO, есть ли простая функция для получения UdtValue из него для создания нормального обновления CQL на основе UpdateStart - person user1228785; 24.07.2020
comment
Спасибо, пакетный оператор, тоже сработал. Мне действительно помогло .. :-) Если есть способ конвертировать поля POJO в обычное обновление cql с помощью какой-нибудь утилиты для UDT, это поможет мне знать, если вы знаете что-нибудь - person user1228785; 24.07.2020
comment
Я не уверен, что понимаю ваш вопрос. Может быть, GetEnity поможет? docs.datastax.com/en/developer /java-driver/4.7/manual/mapper/ - person Alex Ott; 24.07.2020
comment
Нет проблем .. Есть ли способ игнорировать отображение поля в Pojo в БД. Большинство фреймворков помечают поля как @transient. но здесь не работает. В основном POJO как поле уровня домена, которое я хочу игнорировать картографом - person user1228785; 24.07.2020
comment
Это должно быть @Transient: docs.datastax.com. /en/developer/java-driver/4.7/manual/mapper/ - person Alex Ott; 24.07.2020