|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
вадяllemingВ запросе с coalesce не будет стрингов?coalesce вернёт то что требуется. если у тебя текстовое поле то обычно делают coalesce (поле,"") К сожалению, нет. В некоторых СУБД пустая строка эквивалентна null. Но мое IMHO, что с БД надо работать с помощью какого-то фреймворка. ResultSet + JSP + pure HTML - как-то совсем сурово ((( Столько мелочей о которых можно забыть: и null, и не забывать вызывать close (try..finally) и пр. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 17:32 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
вадяк примеру при получении данных из селекта хибер сначала заполняет лист, и только потом отдает его на использование. а зачем? когда можно напрямую использовать данные из селекта. это и затраты на память и на время. ладно когда с 10 записей, а когда 1000?. страшную вещь тебе скажу, resultset`ы - тоже выбирают все данные в память и оттуда с ней работают. Только никому не говори. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 17:38 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
вадятут нет неприязни, тут есть наблюдение, когда прошёл жизненную школу по работе с базами, очень видно - что не так делается. Очень противно, когда своё незнание в предмете скрывается за громкими словами... . Ты реально думаешь, что кто то тут не умеет сделать в бд вьюху или не умеет использовать native query? Просто интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 17:40 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
Озверинстрашную вещь тебе скажу, resultset`ы - тоже выбирают все данные в память и оттуда с ней работают. Только никому не говори.не совсем так. у субд есть ключи какой объём данных они возвращают через буфер. и заполняют его по мере чтения из него. поэтому находясь в начале результсета невозможно узнать количество записей. как только дошел до конца результсета - все данные в памяти, а если ты их использовал -незачем хранить. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 17:58 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
ОзверинТы реально думаешь, что кто то тут не умеет сделать в бд вьюху или не умеет использовать native query? Просто интересно.в том то и дело что то что тут делают это поверхностное использование возможностей субд. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 18:00 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
вадяОзверинстрашную вещь тебе скажу, resultset`ы - тоже выбирают все данные в память и оттуда с ней работают. Только никому не говори.не совсем так. у субд есть ключи какой объём данных они возвращают через буфер. и заполняют его по мере чтения из него. поэтому находясь в начале результсета невозможно узнать количество записей. как только дошел до конца результсета - все данные в памяти, а если ты их использовал -незачем хранить. совсем не так. Это поведение НЕ по умолчанию. Пример: документация postgresql jdbc авторBy default the driver collects all the results for the query at once. This can be inconvenient for large data sets so the JDBC driver provides a means of basing a ResultSet on a database cursor and only fetching a small number of rows. А дальше ряд ограничений на работу с курсором, сомневаюсь, о которых ты читал вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 18:02 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
вадяОзверинТы реально думаешь, что кто то тут не умеет сделать в бд вьюху или не умеет использовать native query? Просто интересно.в том то и дело что то что тут делают это поверхностное использование возможностей субд. в том то и дело, что это подфорум для java программистов, а проблема заключается в том, что ты пока еще ни одним своим постом не продемонстрировал какое-либо глубокое понимание основ работы с бд, но свое презрение успел выразить. При этом твой уровень знаний как java, так бд - пока еще под большим вопросом. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 18:03 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
вадяпотому что java - это байткод, а coalesce - это машинный код. опять мантры про байт код. вадядаже если использовать Код: java 1.
всё равно двойное обращение к rs.getString(4)... уже лучше Код: java 1. 2.
вадяcoalesce вернёт то что требуется. rs.getString создаст строку, но разве если в запросе есть coalesce то rs.getString(4) не понадобиться ? Можете пример привести без rs.getString(4) ? Как это фраза соотносится с производительностью. Если используется coalesce в запросе то rs.getString(4) будет работать по другому ежели в запросе этой функции нет ? Напоминаю вашу претензию, проблемы с производительность из за rs.getString в цикле, что этот вызов будет создавать строку, т..е если используем coalesce то rs.getString перестанет создавать строку?, или rs.getString вообще не понадобится ? Я обращал внимание что в случае coalesce, в связи с универсальностью этой фукнции, инструкций для вычисления результа будет больше на уровне бд. Если это не видно значит этого нет ? Если для Вас это не наглядно то можно посмотреть код postgres. вадятут нет неприязни, тут есть наблюдение, когда прошёл жизненную школу по работе с базами, очень видно - что не так делается. Очень противно, когда своё незнание в предмете скрывается за громкими словами... Когда настаивают на преимуществах хибера, не представляя что он делает. К примеру при получении данных из селекта хибер сначала заполняет лист, и только потом отдает его на использование. а зачем? когда можно напрямую использовать данные из селекта. это и затраты на память и на время. ладно когда с 10 записей, а когда 1000? А можно вообще jvm в процессе postgres в одном адресном пространстве запустить и сразу после чтения с диска передавать указатель на то куда все считалось, еще будет быстрее. Зачем заполнять всякие буферы, передавать кудато, сериализовать туда и обратно ну зачем. На деле же все проще, требуется отдать пользователю за 100мс, какая разница hibernate там или чистый jdbc. вадясистема должна работать быстро. это основное. программист должен уметь написать так чтоб работающий быстро код был доступен для лёгкого понимания, и он должен понимать любой код. а писать код с ориентацией на слабых сопровождающих - шаг в пропасть. Вот если ко все машинам основное требование было ездить быстро, страшно было бы на дорогу выйти. Бесконечно быстро это бесконечно дорого. Тут опять треугольник надежно, быстро приемлемо по затратам, треугольник крутите туда куда надо. Опять же основная претенция на категоричность фразы в "БД быстрее наитивнее оптимизированней" ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 18:15 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
Озверинвадяпропущено... не совсем так. у субд есть ключи какой объём данных они возвращают через буфер. и заполняют его по мере чтения из него. поэтому находясь в начале результсета невозможно узнать количество записей. как только дошел до конца результсета - все данные в памяти, а если ты их использовал -незачем хранить. боюсь вы даже про разные кэши ведете речь, у вади кэши субд, а у вас кэши в jdbc драйвере. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 18:23 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
Озверинв том то и дело, что это подфорум для java программистов, а проблема заключается в том, что ты пока еще ни одним своим постом не продемонстрировал какое-либо глубокое понимание основ работы с бд, но свое презрение успел выразить. При этом твой уровень знаний как java, так бд - пока еще под большим вопросом. когда ответить нечего начинаются личностные нападки.... если б загружались все данные - то количество записей резульсета было бы известно сразу. ОзверинА дальше ряд ограничений на работу с курсором, сомневаюсь, о которых ты читал вообще.ну очень хорошо, что ты об этом знаешь.... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 18:23 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
вадя... если б загружались все данные - то количество записей резульсета было бы известно сразу. ... Известны кому? Если не известны Вам, то это не значит, что они вообще не известны ))) Может, кто нибудь знает и помалкивает. Т.к. действительно - раз в __некоторых__ случаях грузятся все данные, то в этих счастилвых случаях, кому-то кол-во записей должно быть известно ))) p.s. тут куча смайликов !!! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 18:33 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
llemingбоюсь вы даже про разные кэши ведете речь, у вади кэши субд, а у вас кэши в jdbc драйвере.+1 llemingrs.getString создаст строку, но разве если в запросе есть coalesce то rs.getString(4) не понадобиться ? Можете пример привести без rs.getString(4) ? coalesce(поле,0) as xx вернёт int rs.getString("xx") вернёт "0" rs.getInt("xx") вернёт 0 llemingА можно вообще jvm в процессе postgres в одном адресном пространстве запустить и сразу после чтения с диска передавать указатель на то куда все считалось, еще будет быстрее. Зачем заполнять всякие буферы, передавать кудато, сериализовать туда и обратно ну зачем. На деле же все проще, требуется отдать пользователю за 100мс, какая разница hibernate там или чистый jdbc.что-то всё намешано в кучу ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 18:36 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevИзвестны кому? Если не известны Вам, то это не значит, что они вообще не известны ))) Может, кто нибудь знает и помалкивает. Т.к. действительно - раз в __некоторых__ случаях грузятся все данные, то в этих счастилвых случаях, кому-то кол-во записей должно быть известно )))как только получены данные - и указатель находится в начале - нельзя узнать сколько строк в результсете, необходимо "указатель" переместить на последнюю запись только тогда можно узнать количество строк в результсете ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 18:40 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
llemingВот если ко все машинам основное требование было ездить быстро, страшно было бы на дорогу выйти. Бесконечно быстро это бесконечно дорого. Тут опять треугольник надежно, быстро приемлемо по затратам, треугольник крутите туда куда надо.для конечного пользователя главное чтоб система работала быстро, и ему пофигу что там внутри. вы же пропагандируете - главное чтоб красиво было написано, а как работает - лишь бы работало. в итоге приходится ждать пока операторы загрузят инфу и слышать : "Подождите, ваши данные загружаются" ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 18:44 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
вадяrs.getString("xx") вернёт "0" "0" это же строка создается да еще и в цикле. Почему Код: java 1.
быстрее чем Код: java 1. 2.
вадя что-то всё намешано в кучу ну вам показалось медленно, что не нужна прослойка jpa, можно сразу из resultset данные передавать клиенту. Я описал вариант и выкинуть прослойку resultset и запускать в едином адресном пространстве так будет еще ближе к БД вообще не придется ничего передвать копировать сериализовать, правда так никто не делает. Это правда сильно сложнее будет. Вы остановились на своем уровне, те кто работает с jpa остановились на своем. вадяllemingВот если ко все машинам основное требование было ездить быстро, страшно было бы на дорогу выйти. Бесконечно быстро это бесконечно дорого. Тут опять треугольник надежно, быстро приемлемо по затратам, треугольник крутите туда куда надо.для конечного пользователя главное чтоб система работала быстро, и ему пофигу что там внутри. вы же пропагандируете - главное чтоб красиво было написано, а как работает - лишь бы работало. в итоге приходится ждать пока операторы загрузят инфу и слышать : "Подождите, ваши данные загружаются" чтож вы все перевираете то оператору нужно нужно отдать данные в 100мс дальнейнее улучшение бесмысленно. Неважно за 10мс или за 10мкс или 10нс он все равно не заметит. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 18:51 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
вадяllemingВот если ко все машинам основное требование было ездить быстро, страшно было бы на дорогу выйти. Бесконечно быстро это бесконечно дорого. Тут опять треугольник надежно, быстро приемлемо по затратам, треугольник крутите туда куда надо.для конечного пользователя главное чтоб система работала быстро, и ему пофигу что там внутри. вы же пропагандируете - главное чтоб красиво было написано, а как работает - лишь бы работало. в итоге приходится ждать пока операторы загрузят инфу и слышать : "Подождите, ваши данные загружаются" твои ускорялки на скорости системы не отражаются от слова совсем. Но, главное, сделать это как делаешь ты - с важным презрением к тем, кто не якобы не понимает, как работает бд. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 18:52 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
llemingоператору нужно нужно отдать данные в 100мс дальнейнее улучшение бесмысленно. Неважно за 10мс или за 10мкс или 10нс он все равно не заметит.дело в том что система многопользователькая, и если для одного 100мс не заметно, то при 10 юзерах это будет уже 1 сек.... Озверинтвои ускорялки на скорости системы не отражаются от слова совсем. Но, главное, сделать это как делаешь ты - с важным презрением к тем, кто не якобы не понимает, как работает бд.у меня презрение к тем , кто скрывает своё не понимание субд за громкими словами. выставляя свои минимальные знания как огромные., может с его точки зрения они и видятся таковыми, но на само деле таковыми не являются. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 18:58 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
вадя,ты сам себя презираешь? Ты ж не продемонстрировал пока ничего. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 18:59 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
вадяLeonid KudryavtsevИзвестны кому? Если не известны Вам, то это не значит, что они вообще не известны ))) Может, кто нибудь знает и помалкивает. Т.к. действительно - раз в __некоторых__ случаях грузятся все данные, то в этих счастилвых случаях, кому-то кол-во записей должно быть известно )))как только получены данные - и указатель находится в начале - нельзя узнать сколько строк в результсете, необходимо "указатель" переместить на последнюю запись только тогда можно узнать количество строк в результсете Ссылка была указана на jdbc драйвер postgresql. Есть причины недоверять разрабам драйвере все ли данные сразу в resultset помещаются или нет? Во первых это поведение не гарантируется все производителями БД. Те кто делал postgres сделал так как сделал. Те кто писал jdbc spec сделал так чтобы можно было расширить. Так в случае Postgresql всего ли частная имплетентация. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 19:09 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
lleming нельзя узнать сколько строк в результсете Можно (postygresql), возьми и через reflection дерни. Только решение это не jdbc. И только для конкретного драйвера. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 19:12 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
llemingСсылка была указана на jdbc драйвер postgresql. Есть причины недоверять разрабам драйвере все ли данные сразу в resultset помещаются или нет?я работал с несколькими субд и во всех так. проверь - перед первым next сколько строк вернул резульсет Озверинвадя,ты сам себя презираешь? Ты ж не продемонстрировал пока ничего.показывал, больше не буду ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 19:12 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
llemingМожно (postygresql), возьми и через reflection дерни. Только решение это не jdbc. И только для конкретного драйвера.хорошее уточнение.... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 19:13 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
вадяllemingСсылка была указана на jdbc драйвер postgresql. Есть причины недоверять разрабам драйвере все ли данные сразу в resultset помещаются или нет?я работал с несколькими субд и во всех так. проверь - перед первым next сколько строк вернул резульсет Озверинвадя,ты сам себя презираешь? Ты ж не продемонстрировал пока ничего.показывал, больше не буду Перед тем как отписать проверил. Все ок. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 19:14 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
вадяllemingМожно (postygresql), возьми и через reflection дерни. Только решение это не jdbc. И только для конкретного драйвера.хорошее уточнение.... Еще уточнение, это не гарантируется. Нужно автокомит отключить и настроить тип result set это раз. Два нет никаких гарантий что через неделю в новом релизе драйвера это поведение поправят в "нужную" сторону. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 19:18 |
|
Вывод Null из БД
|
|||
---|---|---|---|
#18+
вадяllemingСсылка была указана на jdbc драйвер postgresql. Есть причины недоверять разрабам драйвере все ли данные сразу в resultset помещаются или нет?я работал с несколькими субд и во всех так. проверь - перед первым next сколько строк вернул резульсет страшную тебе вещь скажу, но java jdbc у connection autocommit по умолчанию = true, а значит всегда данные - открыто соединение к базе и читается пачками или нет - зависит а) от того, поддерживает ли holdable cursor конкретный jdbc драйвер к базе б) собственно реализация сценария при чтении данных в резалтсет при коммите. https://docs.oracle.com/javase/tutorial/jdbc/basics/retrieving.html Cursor Holdability Calling the method Connection.commit can close the ResultSet objects that have been created during the current transaction. In some cases, however, this may not be the desired behavior. The ResultSet property holdability gives the application control over whether ResultSet objects (cursors) are closed when commit is called. The following ResultSet constants may be supplied to the Connection methods createStatement, prepareStatement, and prepareCall: авторHOLD_CURSORS_OVER_COMMIT: ResultSet cursors are not closed; they are holdable: they are held open when the method commit is called. Holdable cursors might be ideal if your application uses mostly read-only ResultSet objects. CLOSE_CURSORS_AT_COMMIT: ResultSet objects (cursors) are closed when the commit method is called. Closing cursors when this method is called can result in better performance for some applications. The default cursor holdability varies depending on your DBMS. Note: Not all JDBC drivers and databases support holdable and non-holdable cursors. The following method, JDBCTutorialUtilities.cursorHoldabilitySupport, outputs the default cursor holdability of ResultSet objects and whether HOLD_CURSORS_OVER_COMMIT and CLOSE_CURSORS_AT_COMMIT are supported: ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2018, 19:20 |
|
|
start [/forum/topic.php?fid=59&msg=39753009&tid=2121563]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 182ms |
0 / 0 |