|
|
|
Бага Java или недостаток знаний?
|
|||
|---|---|---|---|
|
#18+
chpashaGorloPavelТак как же избавится от инъекций? Только через PrepareStatement?проще всего так. А что мешает вставить в statement.setString(1, "admin';drop table test;select '1")? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2012, 17:05:46 |
|
||
|
Бага Java или недостаток знаний?
|
|||
|---|---|---|---|
|
#18+
GorloPavelА что мешает вставить в statement.setString(1, "admin';drop table test;select '1")? действительно, что мешает? попробуй ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2012, 18:23:36 |
|
||
|
Бага Java или недостаток знаний?
|
|||
|---|---|---|---|
|
#18+
chpasha, Попробовал! Еще раз спасибО! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2012, 18:42:01 |
|
||
|
Бага Java или недостаток знаний?
|
|||
|---|---|---|---|
|
#18+
GorloPavelИли вы предлагали сформировать строку запросане. я ниче не предлагаю. я показываю направление, или задаю вопросы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2012, 22:23:11 |
|
||
|
Бага Java или недостаток знаний?
|
|||
|---|---|---|---|
|
#18+
Начал использовать PreparedStatement и сервер упал в Out of memory :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2012, 04:16:41 |
|
||
|
Бага Java или недостаток знаний?
|
|||
|---|---|---|---|
|
#18+
GorloPavelНачал использовать PreparedStatement и сервер упал в Out of memory :( Скорее всего не закрываете всё что нужно. Слишком много разных SQL операций на один метод, поэтому вам сложно проконтролировтаь все закрываемые ресурсы в одном методе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2012, 10:41:48 |
|
||
|
Бага Java или недостаток знаний?
|
|||
|---|---|---|---|
|
#18+
GorloPavelНачал использовать PreparedStatement и сервер упал в Out of memory :( возьми spring-jdbc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2012, 10:42:03 |
|
||
|
Бага Java или недостаток знаний?
|
|||
|---|---|---|---|
|
#18+
Penkov VladimirGorloPavelНачал использовать PreparedStatement и сервер упал в Out of memory :( возьми spring-jdbcили jdbi, что ещё приятнее ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2012, 22:09:43 |
|
||
|
Бага Java или недостаток знаний?
|
|||
|---|---|---|---|
|
#18+
chpashaGorloPavelchpasha, Век живи - век учись! судя по приведенным кускам кода, ты не представляешь себе, на сколько ты в начале пути ;) GorloPavelИ еще вопрос... Т.е правильнее будет сделать в самом начале один раз сохранив глобальную ссылку на объект... нет. так делать не стоит, поимеешь больше проблем, чем выгоды. главный смысл использования preparedstatement именно разруливание проблем с параметрами (и это уже не мало) плюс еще кое-чего. остальные упомянутые ранее плюшки можно получить только если у тебя есть повторяющееся действия. если например твой инсерт нужно в цикле несколько раз выполнить. P.S. советую погуглить про connection pooling, spring-ioc , spring-jdbc, это для начала. А если селекты делать со связанными переменными, то выборка происходит обычно быстрее. Только бывает в жизни всякое, вот у нас, после обновления версии Оракла, если не ошибаюсь, что-то начудачили, и уже год, как все запросы в моих приложениях, переделаны без использования связанных переменных, потому-что так работает быстрее, как бы странно это ни звучало. Админы представления не имеют, что с этим делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2012, 14:23:41 |
|
||
|
Бага Java или недостаток знаний?
|
|||
|---|---|---|---|
|
#18+
XDiaBLoАдмины представления не имеют, что с этим делать. - так оно всегда и бывает. когда никто не знает в чем дело, зачастую, решается абы как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2012, 14:39:01 |
|
||
|
Бага Java или недостаток знаний?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczXDiaBLoАдмины представления не имеют, что с этим делать. - так оно всегда и бывает. когда никто не знает в чем дело, зачастую, решается абы как. У меня были чёткие указания от начальника. Убрать использование связанных переменных. Решать проблему, задача мне не ставилась. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2012, 14:40:36 |
|
||
|
Бага Java или недостаток знаний?
|
|||
|---|---|---|---|
|
#18+
XDiaBLoА если селекты делать со связанными переменными, то выборка происходит обычно быстрее. Только бывает в жизни всякое, вот у нас, после обновления версии Оракла, если не ошибаюсь, что-то начудачили, и уже год, как все запросы в моих приложениях, переделаны без использования связанных переменных, потому-что так работает быстрее, как бы странно это ни звучало. Админы представления не имеют, что с этим делать. Аналогично влетел при обновлении оракла у одного заказчика (админ там ... как бы сказать... самоучка предпенсионного возраста). Если количество запросов относительно невелико, но они "тяжелые", то затраты на prepare Statment несущественны. А количество открытых курсоров в оракле смотрел, которые соответствуют запросам а-ля executeSql("select filed from table") ? Не напрягает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2012, 16:12:55 |
|
||
|
Бага Java или недостаток знаний?
|
|||
|---|---|---|---|
|
#18+
По поводу PreparedStatement. У меня был случай, когда НЕ prepared запрос выполнялся за секунды, а Prepared - оооочень долго (по 10 минут ждал). MS SQL Server 2008 + jtds. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2012, 17:45:45 |
|
||
|
Бага Java или недостаток знаний?
|
|||
|---|---|---|---|
|
#18+
sanBezXDiaBLoА если селекты делать со связанными переменными, то выборка происходит обычно быстрее. Только бывает в жизни всякое, вот у нас, после обновления версии Оракла, если не ошибаюсь, что-то начудачили, и уже год, как все запросы в моих приложениях, переделаны без использования связанных переменных, потому-что так работает быстрее, как бы странно это ни звучало. Админы представления не имеют, что с этим делать. Аналогично влетел при обновлении оракла у одного заказчика (админ там ... как бы сказать... самоучка предпенсионного возраста). Если количество запросов относительно невелико, но они "тяжелые", то затраты на prepare Statment несущественны. А количество открытых курсоров в оракле смотрел, которые соответствуют запросам а-ля executeSql("select filed from table") ? Не напрягает? Ну да, вроде как раз что-то такое было, куча каких-то левых запросов возникало, пока не убрали связанные переменные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 07:09:48 |
|
||
|
Бага Java или недостаток знаний?
|
|||
|---|---|---|---|
|
#18+
LeonidvПо поводу PreparedStatement. У меня был случай, когда НЕ prepared запрос выполнялся за секунды, а Prepared - оооочень долго (по 10 минут ждал). MS SQL Server 2008 + jtds. Точно такой случай у нас с Ораклом вышел. Отчего я и убрал связанные переменные из программ. Хотя когда-то вводил с совершенно противоположными целями, для ускорения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2012, 07:10:52 |
|
||
|
Бага Java или недостаток знаний?
|
|||
|---|---|---|---|
|
#18+
LeonidvПо поводу PreparedStatement. У меня был случай, когда НЕ prepared запрос выполнялся за секунды, а Prepared - оооочень долго (по 10 минут ждал). MS SQL Server 2008 + jtds. Разные запросы, поэтому и выполняются по разному. Для Код: sql 1. и партаметром "abc", эквивалентный SQL Код: sql 1. С MS SQL проблема известная и легко излечимая. Java пользует unicode, и драйвер отправляет значения параметров как NVARCHAR. Если в запросе сравнивается поле CHAR/VARCHAR с значением из параметра, то сервер по тихому делает неявное преобразование. Только не параметра к типу поля, а наоборот. Оптимизатор индекса для Unicode значений не находит ( есть только для ASCII ) и сканирует всю таблицу. Лечится переводом всех строк в базе к Unicode ( NCHAR/NVARCHAR ), принудительным CAST в запросе или параметром соединения для передачи всех строковых параметров как ASCII. Безотносительно к PreparedStatement, с типами надо обращаться аккуратно, на те же проблемы легко нарваться и просто в SQL запросе или хранимой процедуре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 07:02:46 |
|
||
|
Бага Java или недостаток знаний?
|
|||
|---|---|---|---|
|
#18+
пролетевшийJava пользует unicode, и драйвер отправляет значения параметров как NVARCHAR. Если в запросе сравнивается поле CHAR/VARCHAR с значением из параметра, то сервер по тихому делает неявное преобразование. Только не параметра к типу поля, а наоборот. Оптимизатор индекса для Unicode значений не находит ( есть только для ASCII ) и сканирует всю таблицу. Лечится переводом всех строк в базе к Unicode ( NCHAR/NVARCHAR ), принудительным CAST в запросе или параметром соединения для передачи всех строковых параметров как ASCII. Я подсоединялся к сессии и явно видел что не работает индекс по дате. В маппинге было java.util.Date, в оракле поле типа Date. Маппинг топлинка. Не могу понять, как тогда в принципе заставить это работать с датой? Не подскажете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2012, 10:09:06 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37882304&tid=2131336]: |
0ms |
get settings: |
8ms |
get forum list: |
26ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
59ms |
get topic data: |
18ms |
get forum data: |
5ms |
get page messages: |
88ms |
get tp. blocked users: |
2ms |
| others: | 319ms |
| total: | 539ms |

| 0 / 0 |
