powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Бага Java или недостаток знаний?
17 сообщений из 42, страница 2 из 2
Бага Java или недостаток знаний?
    #37879350
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaGorloPavelТак как же избавится от инъекций? Только через PrepareStatement?проще всего так.

А что мешает вставить в statement.setString(1, "admin';drop table test;select '1")?
...
Рейтинг: 0 / 0
Бага Java или недостаток знаний?
    #37879370
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelА что мешает вставить в statement.setString(1, "admin';drop table test;select '1")?
действительно, что мешает? попробуй ;)
...
Рейтинг: 0 / 0
Бага Java или недостаток знаний?
    #37879377
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,

Попробовал! Еще раз спасибО! :)
...
Рейтинг: 0 / 0
Бага Java или недостаток знаний?
    #37879511
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelИли вы предлагали сформировать строку запросане. я ниче не предлагаю.
я показываю направление, или задаю вопросы :)
...
Рейтинг: 0 / 0
Бага Java или недостаток знаний?
    #37879667
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начал использовать PreparedStatement и сервер упал в Out of memory :(
...
Рейтинг: 0 / 0
Бага Java или недостаток знаний?
    #37879705
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelНачал использовать PreparedStatement и сервер упал в Out of memory :(
Скорее всего не закрываете всё что нужно. Слишком много разных SQL операций на один метод, поэтому вам сложно проконтролировтаь все закрываемые ресурсы в одном методе.
...
Рейтинг: 0 / 0
Бага Java или недостаток знаний?
    #37880282
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelНачал использовать PreparedStatement и сервер упал в Out of memory :(

возьми spring-jdbc
...
Рейтинг: 0 / 0
Бага Java или недостаток знаний?
    #37881370
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Penkov VladimirGorloPavelНачал использовать PreparedStatement и сервер упал в Out of memory :(

возьми spring-jdbcили jdbi, что ещё приятнее )
...
Рейтинг: 0 / 0
Бага Java или недостаток знаний?
    #37882264
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaGorloPavelchpasha,
Век живи - век учись!
судя по приведенным кускам кода, ты не представляешь себе, на сколько ты в начале пути ;)

GorloPavelИ еще вопрос... Т.е правильнее будет сделать в самом начале один раз сохранив глобальную ссылку на объект...
нет. так делать не стоит, поимеешь больше проблем, чем выгоды. главный смысл использования preparedstatement именно разруливание проблем с параметрами (и это уже не мало) плюс еще кое-чего. остальные упомянутые ранее плюшки можно получить только если у тебя есть повторяющееся действия. если например твой инсерт нужно в цикле несколько раз выполнить.

P.S. советую погуглить про connection pooling, spring-ioc , spring-jdbc, это для начала.
А если селекты делать со связанными переменными, то выборка происходит обычно быстрее. Только бывает в жизни всякое, вот у нас, после обновления версии Оракла, если не ошибаюсь, что-то начудачили, и уже год, как все запросы в моих приложениях, переделаны без использования связанных переменных, потому-что так работает быстрее, как бы странно это ни звучало. Админы представления не имеют, что с этим делать.
...
Рейтинг: 0 / 0
Бага Java или недостаток знаний?
    #37882300
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XDiaBLoАдмины представления не имеют, что с этим делать. - так оно всегда и бывает. когда никто не знает в чем дело, зачастую, решается абы как.
...
Рейтинг: 0 / 0
Бага Java или недостаток знаний?
    #37882304
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczXDiaBLoАдмины представления не имеют, что с этим делать. - так оно всегда и бывает. когда никто не знает в чем дело, зачастую, решается абы как.
У меня были чёткие указания от начальника. Убрать использование связанных переменных. Решать проблему, задача мне не ставилась. :)
...
Рейтинг: 0 / 0
Бага Java или недостаток знаний?
    #37882487
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XDiaBLoА если селекты делать со связанными переменными, то выборка происходит обычно быстрее. Только бывает в жизни всякое, вот у нас, после обновления версии Оракла, если не ошибаюсь, что-то начудачили, и уже год, как все запросы в моих приложениях, переделаны без использования связанных переменных, потому-что так работает быстрее, как бы странно это ни звучало. Админы представления не имеют, что с этим делать.
Аналогично влетел при обновлении оракла у одного заказчика (админ там ... как бы сказать... самоучка предпенсионного возраста).
Если количество запросов относительно невелико, но они "тяжелые", то затраты на prepare Statment несущественны.

А количество открытых курсоров в оракле смотрел, которые соответствуют запросам а-ля executeSql("select filed from table") ?
Не напрягает?
...
Рейтинг: 0 / 0
Бага Java или недостаток знаний?
    #37882676
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу PreparedStatement. У меня был случай, когда НЕ prepared запрос выполнялся за секунды, а Prepared - оооочень долго (по 10 минут ждал).

MS SQL Server 2008 + jtds.
...
Рейтинг: 0 / 0
Бага Java или недостаток знаний?
    #37883081
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBezXDiaBLoА если селекты делать со связанными переменными, то выборка происходит обычно быстрее. Только бывает в жизни всякое, вот у нас, после обновления версии Оракла, если не ошибаюсь, что-то начудачили, и уже год, как все запросы в моих приложениях, переделаны без использования связанных переменных, потому-что так работает быстрее, как бы странно это ни звучало. Админы представления не имеют, что с этим делать.
Аналогично влетел при обновлении оракла у одного заказчика (админ там ... как бы сказать... самоучка предпенсионного возраста).
Если количество запросов относительно невелико, но они "тяжелые", то затраты на prepare Statment несущественны.

А количество открытых курсоров в оракле смотрел, которые соответствуют запросам а-ля executeSql("select filed from table") ?
Не напрягает?
Ну да, вроде как раз что-то такое было, куча каких-то левых запросов возникало, пока не убрали связанные переменные.
...
Рейтинг: 0 / 0
Бага Java или недостаток знаний?
    #37883082
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvПо поводу PreparedStatement. У меня был случай, когда НЕ prepared запрос выполнялся за секунды, а Prepared - оооочень долго (по 10 минут ждал).

MS SQL Server 2008 + jtds.
Точно такой случай у нас с Ораклом вышел. Отчего я и убрал связанные переменные из программ. Хотя когда-то вводил с совершенно противоположными целями, для ускорения.
...
Рейтинг: 0 / 0
Бага Java или недостаток знаний?
    #37884732
пролетевший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvПо поводу PreparedStatement. У меня был случай, когда НЕ prepared запрос выполнялся за секунды, а Prepared - оооочень долго (по 10 минут ждал).

MS SQL Server 2008 + jtds.
Разные запросы, поэтому и выполняются по разному. Для
Код: sql
1.
SELECT * FROM A WHERE A.B = ?

и партаметром "abc", эквивалентный SQL
Код: sql
1.
SELECT * FROM A WHERE A.B = N'abc'



С MS SQL проблема известная и легко излечимая. Java пользует unicode, и драйвер отправляет значения параметров как NVARCHAR. Если в запросе сравнивается поле CHAR/VARCHAR с значением из параметра, то сервер по тихому делает неявное преобразование. Только не параметра к типу поля, а наоборот. Оптимизатор индекса для Unicode значений не находит ( есть только для ASCII ) и сканирует всю таблицу.
Лечится переводом всех строк в базе к Unicode ( NCHAR/NVARCHAR ), принудительным CAST в запросе или параметром соединения для передачи всех строковых параметров как ASCII.

Безотносительно к PreparedStatement, с типами надо обращаться аккуратно, на те же проблемы легко нарваться и просто в SQL запросе или хранимой процедуре.
...
Рейтинг: 0 / 0
Бага Java или недостаток знаний?
    #37884871
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пролетевшийJava пользует unicode, и драйвер отправляет значения параметров как NVARCHAR. Если в запросе сравнивается поле CHAR/VARCHAR с значением из параметра, то сервер по тихому делает неявное преобразование. Только не параметра к типу поля, а наоборот. Оптимизатор индекса для Unicode значений не находит ( есть только для ASCII ) и сканирует всю таблицу.
Лечится переводом всех строк в базе к Unicode ( NCHAR/NVARCHAR ), принудительным CAST в запросе или параметром соединения для передачи всех строковых параметров как ASCII.

Я подсоединялся к сессии и явно видел что не работает индекс по дате. В маппинге было java.util.Date, в оракле поле типа Date.
Маппинг топлинка. Не могу понять, как тогда в принципе заставить это работать с датой? Не подскажете?
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Бага Java или недостаток знаний?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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