BG Development


  Reply to this topicStart new topicStart Poll

> Общ интерфейс връщане на резултати от база данни
maimunata
Публикувано на: 26-12-2017, 20:56
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 41
Регистриран на: 14.07.09



Привет колеги, ще се радвам ако ме насочите или ми дадете съвет за следният въпрос който е по скоро концептуален.

Имам метод който взима резултати от база данни и връща този резултат като ResultSet с помоща на JDBC експериментално искам да сложа данните от базата в JSON документ и да ги взимам и да ги връщам като JSONArray

тосет имам една имплементация на DB провайдър JDBCDB.fetch('users') който връща данни като ResultSet и втора имплементация която е JSONDB.fetch('users') която връща данни като JSONARray коя имплементация ще се ползва се определя в етапа на конфигурация, и има Wrapper който избира коя имплементация ще се ползва. Но за примера приемаме че апито е еднакво.


Резултатният обект се подава на обект който има метод buildFromDB който има два overload- ти варианта единият приема ResultSet и прави обект другия приема JSONArray и връща обект.

Сега искам да унифицирам тази операция. Тоест да се връща само един тип данни и те съответно да се подават на един метод.
Защото сега имам проблем че апито ми връща данни от различен тип.


Мислех да направя така че JSONArray да имплементира ResultSet но той съдържа в себе си 100+ сигнатури които не ми трябват пък и той е част от SQL а JSON имплементацията ми концептуално не е вързана с SQL - а

Мислех за някакви Generic методи но не можга да измисля как да стане номера.
Ще се радвам на съвет благодаря.
PMEmail Poster
Top
lucky
Публикувано на: 27-12-2017, 00:12
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 193
Регистриран на: 05.08.17



Resultset -> List/Map (?) -> JSONArray

Т.е., ползвай стандартни типове от данни като параметри, като композираш интерфейсите.

Това мнение е било редактирано от lucky на 27-12-2017, 00:14
PMEmail Poster
Top
thrawn
Публикувано на: 27-12-2017, 09:07
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1187
Регистриран на: 17.01.17



Тая постановка ми се струва, че е напълно погрешна.

Първо, ResultSet e тясно свързан с JDBC и е лошо да го вадиш от контекстът в който се ползва JDBC (най-малкото, защото към него има закачени ресурси, които не могат да бъдат затворени.
Та правилния начин за употребата му е, да се направи фабрика която да приема ResultSet и да връща наякакво DTO.

С други думи, имаме сторидж който се явява SQL сървърът. Имаме логика която работи с DTO които записва/чете в/от сториджът. И разбирасе, има някаква презентация на DTO -тата (показваме ги в таблица да речем)

Ако ще разширяваме тая постановка с JSON, то JSON -ът се явява сториджът. DTO -тата и презентацията са си същите и остава само да се разпише междинния слой, който се явява специфичен за работа с JSON.

Та тая магария се нарича repository pattern (грубо, щото тоя патерн се опитва да проповядва универсални имплементации, а такова нещо в случая не е необходимо).
PMEmail Poster
Top
FidelDahan
Публикувано на: 27-12-2017, 17:55
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2248
Регистриран на: 12.06.08



QUOTE (maimunata @ 26-12-2017, 20:56)
Привет колеги, ще се радвам ако ме насочите или ми дадете съвет за следният въпрос който е по скоро концептуален.

Имам метод който взима резултати от база данни и връща този резултат като ResultSet с помоща на JDBC  експериментално искам да сложа данните от базата в JSON документ и да ги взимам и да ги връщам като JSONArray

тосет имам една имплементация на DB провайдър JDBCDB.fetch('users') който връща данни като ResultSet и втора имплементация която е JSONDB.fetch('users')  която връща данни като JSONARray коя имплементация ще се ползва се определя в етапа на конфигурация, и има Wrapper който избира коя имплементация ще се ползва. Но за примера приемаме че апито е еднакво.


Резултатният обект се подава на обект който има метод buildFromDB който има два overload- ти варианта единият приема ResultSet и прави обект другия приема JSONArray и връща обект.

Сега искам да унифицирам тази операция. Тоест да се връща само един тип данни и те съответно да се подават на един метод.
Защото сега имам проблем че апито ми връща данни от различен тип.
То

Мислех да направя така че JSONArray да имплементира ResultSet но той съдържа в себе си 100+ сигнатури които не ми трябват пък и той е част от SQL а JSON имплементацията ми концептуално не е вързана с SQL - а

Мислех за някакви Generic методи но не можга да измисля как да стане номера.
Ще се радвам на съвет благодаря.

Поясни:
- Какъв вид и колко вида пъвични данни имаш - само един източник на данни (базата е първоизточника, а JSON е само временно явление в паметта) или два алтернативни източника на данни (базата или JSON файла).

Дай примерен (ориентировачен) код за тази операция която искаш да унифицираш, защото свободния ти текст е свободен за различни интерпретации. Това, че тук там забравяш да завършиш изречението с точка и започваш с малка буква не улеснява нещата.

Това мнение е било редактирано от FidelDahan на 27-12-2017, 17:57
PMEmail Poster
Top
maimunata
Публикувано на: 27-12-2017, 21:06
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 41
Регистриран на: 14.07.09



Привет, предложението за Repository pattern ми допадна, направих имплементация която клони към тази концепция.

Иначе на въпросите. JSON базата данни (грубо казано) е локална имплементация на сървърна база данни, която има за цел да се ползва за бързи и тестови справки. За сценария допускаме че тя напълно репликира данните в основната база.

Заявките които трябва да се имплементират са стандартни CRUD заявки.
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2015 | BG Development | All Rights Reserved
RSS 2.0