Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5] 6 7 8   вперед  Ctrl      все
 Re: Вывод Null из БД  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
вадя
в субд можно сделать многое проще
проще что? Штаны на лямках?
24 дек 18, 16:04    [21772255]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16798
Petro123
проще что? Штаны на лямках?
ну если ты этого не понимаешь, я помочь не могу....
24 дек 18, 16:07    [21772260]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
вадя,
Да.
Для ТС вопрос решили.
А больше нечего сравнивать.
Удачи!
24 дек 18, 16:13    [21772267]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Korcar
Member

Откуда:
Сообщений: 7902
Petro123
Korcar
пропущено...

не понимаю зачем усложнять решение такой просто проблемы
твой вопрос решен в первом посте топика.
Мы обсуждаем методы решения не твои, а вообще java программистов.

у тебя опять проблемы с логикой. не важно обсуждается конкретно моя проблема или ситуация с принципе. ты ж никаких аргументов не приводишь в пользу своего варианта решения. какой профит можно получить при таком подходе? (про разнящиеся БД теста и продуктива мы уже слышали)
25 дек 18, 09:07    [21772663]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Korcar,
а тебе какое дело? Ты не участвовал и не участвуешь в дискуссии по архитектуре.
Выше ты сказал что сделал в СУБД.
25 дек 18, 11:13    [21772751]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Korcar
Petro123
пропущено...
твой вопрос решен в первом посте топика.
Мы обсуждаем методы решения не твои, а вообще java программистов.

у тебя опять проблемы с логикой. не важно обсуждается конкретно моя проблема или ситуация с принципе. ты ж никаких аргументов не приводишь в пользу своего варианта решения. какой профит можно получить при таком подходе? (про разнящиеся БД теста и продуктива мы уже слышали)


да как бе от тебя НАМ тоже не видно никаких аргументов.
25 дек 18, 11:18    [21772757]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
lleming
Member

Откуда:
Сообщений: 1654
вадя
в том что в субд можно сделать многое проще. и будет работать быстрее.


if (value ==null) value = DEFAULT_VALUE

куда уж проще.

Про быстрее тут два варианта быстрее внедрить и быстрее будет работать. В первом случае все таки jstl быстрее (личное мнение) ибо не требуется особых знаний sql от разработчик т.к. бд могут быть разные, sql запросы могут генерироваться динамически или подгружаться из ресурсов, специфические особенности orm, требуется не только получать но и обновлять данные(на сложных вьюшках может не сработать).

Про быстрее будет работать, я уже показал сценарий где не будет быстрее хотя и случай специфический а не абсурдный. Это быстрота прям вряд ли уж так необходима в данном конкретном случае, поэтому мое замечание было чисто теоритическое.

Ну и в догонку позанудствовать

while(rs.next()){
   String value = rs.getString(4);
   if(value == null) value = DEFAULT_VALUE;
}


здесь есть полная информация об операции типе данных и что мы делаем в том время как coalesce гораздо универсальней

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

во вторых он обобщенный coalesce(null, 1) coalesce(null, 'Some string) and so on. Так что там еще будут операции по приведению(проверке) типов участвующих элементов

и даже более сложный случай coalesce(varchar, text, char) какого типа будет результат ?

Накладные расходы правда скорее всего на этапе планирования, но и они вполне измеряемые.
25 дек 18, 12:59    [21772870]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16798
lleming
здесь есть полная информация об операции типе данных и что мы делаем в том время как coalesce гораздо универсальней

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

во вторых он обобщенный coalesce(null, 1) coalesce(null, 'Some string) and so on. Так что там еще будут операции по приведению(проверке) типов участвующих элементов

и даже более сложный случай coalesce(varchar, text, char) какого типа будет результат ?

Накладные расходы правда скорее всего на этапе планирования, но и они вполне измеряемые.
по большому счёту - всё это можно втюхивать менеджеру, но не программисту.
while(rs.next()){
   String value = rs.getString(4);
   if(value == null) value = DEFAULT_VALUE;
}
здесь полная лабуда
использование стринг в цикле. использование промежуточной переменной.

lleming
) ибо не требуется особых знаний sql от разработчика
дальше можно не продолжать..... этим всё сказано....
25 дек 18, 14:25    [21772969]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
вадя
дальше можно не продолжать..... этим всё сказано....
если jstl, orm, ооп, AppServer это прокладки, то можно тоже не продолжать).
25 дек 18, 14:42    [21772983]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 8001
вадя
....
здесь полная лабуда
использование стринг в цикле. использование промежуточной переменной.

lleming
) ибо не требуется особых знаний sql от разработчика
дальше можно не продолжать..... этим всё сказано....


Полностью соглашусь с Вадя.

1. Или ошибка в дизайне базы. Вполне есть констрейны NOT NULL, что бы с NULL'ами в Java не заморачиваться
2. или ошибка в постановке Т.к. не описано, какие действия нужно производить при Null'е
3. Или ошибка в GUI-компонентах, что они Null не правильно обрабатывают.

подавлять Null даже NVL'ем на бизнес-уровне - уже похоже "на лажу"
подавлять Null If'ами - еще хуже

В общем, данная конструкция безумно напоминает Oracle'вую "exception when others then null; end" со всеми вытекающими...

IMHO & AFAIK
25 дек 18, 14:53    [21773000]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Leonid Kudryavtsev
Полностью соглашусь с Вадя.
в чем? А то у него нет ограничений ни на какие заявления.

Leonid Kudryavtsev
Или ошибка в дизайне базы. Вполне есть констрейны NOT NULL, что бы с NULL'ами в Java не заморачиваться

Это вадя не понимает, т.к. В ОРМ это делается в модели.
Вадя не знает что это.

Leonid Kudryavtsev
или ошибка в постановке Т.к. не описано, какие действия нужно производить при Null'е
3. Или ошибка в GUI-компонентах, что они Null не правильно обрабатывают.

подавлять Null даже NVL'ем на бизнес-уровне - уже похоже "на лажу"
подавлять Null If'ами - еще хуже

Согласен.
Только постановка это архитектура.
А вадя кинулся к coaleske()
25 дек 18, 15:09    [21773018]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 8001
Petro123
в чем?

В данном случае Вадя прошелся по решению с if'ами. Тут его полностью поддерживаю. Это какая-то системная кривость. Как "заплатка" работать будет, но только как "заплатка".

Если кодируется свой Model (к примеру для Model-View-Controller) и там такое массово выплывает, то проблема или с исходными данными/структурой или с кривым View (возможно библиотеки-фреймворк выбран не удачно или Вы "не умеете его готовить")
25 дек 18, 15:19    [21773033]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Leonid Kudryavtsev, в oracle разницы между "" и null то не было в свое время, что-то изменилось?:)
Не совсем понятно выступление, причем тут constraint`ы? Из постановки ТСа известно, что в базе бывают null значения - это вполне допустимая вещь, т.к. некоторые поля могут быть не обязательными для заполнения и ждать своей участи в неопределенном состоянии, читай - null. Вопрос ТСа тоже очень прост - на каком уровне null обрабатывать?

Ответ должен быть - не согласен с вадя, а я тоже предлагаю выдавать еще на уровне бд вместо null - 0, допустим. Или, я предлагаю на service уровне backend`а - заменять то и то. Но у нас проблема - у нас нет service уровня, т.к. ТС строит view на основе dao слоя.
Потому выбор сужается до dao слоя или view(в jsp странице средствами jstl).

Когда вы говорите о какой-то лаже, то можете и в двух словах объяснить, в чем же там обрабатывать лажа, а там - нет? Это же форум и тут делятся своими мнения...некоторые, например ваде и корсару - это умение недоступно в силу того, что они слишком профессионалы для местного форума, но другие участники могли бы и объяснить свое мнение, не так ли?
25 дек 18, 15:23    [21773035]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 8001
Petro123
А вадя кинулся к coaleske()

NVL/coalesce тоже не лучший вариант, но мне кажется это менее "бредово", чем простыня if'ов в Java.

По крайне мере, NVL/coalesce можно вынести во View на стороне сервера и не захломлять Java'код. Проблемы со структурой БД, проблемы людей занимающейся базой. Пусть дают нормальные данные и подавляют свои косяки на своей стороне.

p.s.
правда нужно не забывать про Null и Empty string. Но это скорее проблема фреймворка (и возможно ОРМ), что они должеы понимать, что это может быть одно и тоже. Т.е. if'ов на прикладном уровне тоже быть не должно.

IMHO
25 дек 18, 15:24    [21773037]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Leonid Kudryavtsev,
Тогда четко и говорите что вы против простыни.
И все будут согласны))
25 дек 18, 15:30    [21773042]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 8001
Озверин
Leonid Kudryavtsev, в oracle разницы между "" и null то не было в свое время, что-то изменилось?:)


Фреймворка типа ADF, вполне нормально Null понимает и не парится

В крайнем случае, написать свою ф-цию getString и использовать ее. Если речь про String'и.

Но if в том виде, как предложено, есть совсем гуано код. Т.к. в какой-то момент об этом забудут и пойдут косяки NPE, которые отлавливать замаешься.
25 дек 18, 15:31    [21773044]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Leonid Kudryavtsev
не захломлять
этого не будет если разобраться что там за нулл в базе.
Нужный или случайный.
Логично?
А ГУИ таблица сама умеет заменять.
Логично?
25 дек 18, 15:33    [21773046]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Leonid Kudryavtsev
Но if в том виде, как предложено
тот пример иллюстрировал скорость обработки.
Т.к. Вадя всю жизнь работает по одному данному критерию.
Понятие простыня ему недоступно вообще.
25 дек 18, 15:35    [21773049]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Leonid Kudryavtsev
можно вынести во View на стороне сервера
если фантазировать, то можно
alter table a modify (yr not null))
и т.д. И т.п.
25 дек 18, 15:40    [21773057]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
lleming
Member

Откуда:
Сообщений: 1654
вадя
можно втюхивать менеджеру, но не программисту.

по сути есть аргументы ? Казалось бы при чем здесь менерджер, если спорим по поводу что бд быстрее работает.

вадя
while(rs.next()){
   String value = rs.getString(4);
   if(value == null) value = DEFAULT_VALUE;
}
здесь полная лабуда
использование стринг в цикле. использование промежуточной переменной.

Это таки псевдокод подразумевалось что сможете описать почему он всетаки медленнее чем аналог через запрос с coalesce. В запросе с coalesce не будет стрингов? Претензия к коду ? т.е. из за использования стринг в цикле все БД обгоняют java код именно поэтому (напоминаю что здесь вопрос поднимался
вадя
в том что в субд можно сделать многое проще. и будет работать быстрее.

вадя
lleming
) ибо не требуется особых знаний sql от разработчика
дальше можно не продолжать..... этим всё сказано....

все таки есть аргументы или нет, касательно проблемы а не личная неприязнь к тем кто в sql не вникал сильно.
25 дек 18, 15:43    [21773059]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Leonid Kudryavtsev
Озверин
Leonid Kudryavtsev, в oracle разницы между "" и null то не было в свое время, что-то изменилось?:)


Фреймворка типа ADF, вполне нормально Null понимает и не парится

В крайнем случае, написать свою ф-цию getString и использовать ее. Если речь про String'и.

Но if в том виде, как предложено, есть совсем гуано код. Т.к. в какой-то момент об этом забудут и пойдут косяки NPE, которые отлавливать замаешься.


короче вынести логику в код сервлета, а в jsp дергать за метод? чтобы кратко, а то господин ТС с высоты своего профессионализма может не понять.
А в сервлете можно написать что-нибудь вроде
public String getStringFromNullableField() {
 //...и здесь может быть if
}
25 дек 18, 15:46    [21773066]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 8001
Petro123
Leonid Kudryavtsev
можно вынести во View на стороне сервера
если фантазировать, то можно
alter table a modify (yr not null))
и т.д. И т.п.

у нас так в системе большинство полей и объявлено
25 дек 18, 15:47    [21773069]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Leonid Kudryavtsev
Petro123
пропущено...
если фантазировать, то можно
alter table a modify (yr not null))
и т.д. И т.п.

у нас так в системе большинство полей и объявлено


очень немногие бизнес системы могут себе позволить при создании записи заполнить абсолютно все поля. И это - абсолютно нормально и с этим люди живут уже лет 50.
25 дек 18, 15:51    [21773074]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Leonid Kudryavtsev
у нас так в системе большинство полей и объявлено
по разному у нас.
Я боролся только за то чтобы не превращать бд в свалку.
Т.к. Модель это непротиворечивые данные.
Иначе эксель есть.
Удачи!
25 дек 18, 15:59    [21773081]     Ответить | Цитировать Сообщить модератору
 Re: Вывод Null из БД  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16798
lleming
Это таки псевдокод подразумевалось что сможете описать почему он всетаки медленнее чем аналог через запрос с coalesce.
потому что java - это байткод, а coalesce - это машинный код.
даже если использовать
...rs.getString(4)==null?"":rs.getString(4)

всё равно двойное обращение к rs.getString(4)...

lleming
В запросе с coalesce не будет стрингов?
coalesce вернёт то что требуется.
если у тебя текстовое поле то обычно делают coalesce (поле,"")
если числовое то coalesce (числовое_поле,0)
если же рассматривать пример ТС - то подойдет любой вариант - coalesce (числовое_поле,0) или coalesce (числовое_поле,"") или coalesce (числовое_поле,"-"), главное чтоб было rs.getString, потому как у ТС всё преобразуется в строку для вывода клиенту.
Озверин
А в сервлете можно написать что-нибудь вроде
public String getStringFromNullableField() {
 //...и здесь может быть if
}
можно, конечно, но вот только лишний вызов, куча кода.
когда платят за строчки - можно использовать, а с хорошо подвешенным языком - и оправдать можно.
Leonid Kudryavtsev
у нас так в системе большинство полей и объявлено
одно дело когда поля в таблице - тут надо грамотно проставлять дефолтные значения.
другое - когда в результате селекта по нескольким таблицам.
lleming
все таки есть аргументы или нет, касательно проблемы а не личная неприязнь к тем кто в sql не вникал сильно.
тут нет неприязни, тут есть наблюдение, когда прошёл жизненную школу по работе с базами, очень видно - что не так делается. Очень противно, когда своё незнание в предмете скрывается за громкими словами... Когда настаивают на преимуществах хибера, не представляя что он делает.
к примеру при получении данных из селекта хибер сначала заполняет лист, и только потом отдает его на использование. а зачем? когда можно напрямую использовать данные из селекта. это и затраты на память и на время. ладно когда с 10 записей, а когда 1000?

Petro123
тот пример иллюстрировал скорость обработки.
Т.к. Вадя всю жизнь работает по одному данному критерию.
Понятие простыня ему недоступно вообще.
система должна работать быстро. это основное.
программист должен уметь написать так чтоб работающий быстро код был доступен для лёгкого понимания, и он должен понимать любой код.
а писать код с ориентацией на слабых сопровождающих - шаг в пропасть.
25 дек 18, 17:24    [21773165]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5] 6 7 8   вперед  Ctrl      все
Все форумы / Java Ответить