powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как отключить reuse of prepared statements
7 сообщений из 7, страница 1 из 1
Как отключить reuse of prepared statements
    #34438685
Lennier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дока JDBCReuse of prepared statements--PreparedStatements can be used with different pooled connections. This is an important performance improvement for middle tier applications.
Подскажите, как отключить эту фичу?
Код: plaintext
((OraclePreparedStatement)_stmt).setDisableStmtCaching(true);
не помогает,
Код: plaintext
1.
2.
((OracleConnection)conn).setImplicitCachingEnabled(false);
((OracleConnection)conn).setExplicitCachingEnabled(false);
тоже...

Проблема, собственно, в том, что два юзера каждый в своем коннекшене делают prepareStatement() с одинаковым SQL-запросом и получают один и тот же экземпляр PreparedStatement, что не есть гуд.

Oracle JDBC Driver version - 10.1.0.2.0
...
Рейтинг: 0 / 0
Как отключить reuse of prepared statements
    #34438955
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если так?
JDBC Developer’s Guide and ReferencePlain statements are not implicitly cached, because implicit statement caching uses a
SQL string as a key, and plain statements are created without a SQL string.
Therefore, implicit statement caching applies only to the
OraclePreparedStatement and OracleCallableStatement objects, which
are created with a SQL string.
...
Рейтинг: 0 / 0
Как отключить reuse of prepared statements
    #34441326
Lennier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема решилась с помощью
Код: plaintext
((OracleConnection)conn).setStatementCacheSize( 0 );
...
Рейтинг: 0 / 0
Как отключить reuse of prepared statements
    #34442442
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LennierПроблема, собственно, в том, что два юзера каждый в своем коннекшене делают prepareStatement() с одинаковым SQL-запросом и получают один и тот же экземпляр PreparedStatement, что не есть гуд.
Есть готовый тест кейс? это ж явный баг.
...
Рейтинг: 0 / 0
Как отключить reuse of prepared statements
    #34442575
Lennier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понял, кэширование стейтментов это не баг, а фича JDBC 3.0. По крайней мере, преподносится как фича.
Тест-кейз лениво выдирать, кто захочет протестить - написать не сложно. Берутся 2 соединения, в каждом делается prepareStatement(String sql) и проверяется, что вернулся один и тот же экземпляр стейтмента.
...
Рейтинг: 0 / 0
Как отключить reuse of prepared statements
    #34443213
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фича причём очень даже замечательная? нужно только помнить что
JDBC Developer’s Guide and Referenceexplicit statement caching retains statement data and state as well as
metadata
для implicit statement caching
JDBC Developer’s Guide and Reference state and data information are automatically re-initialized
and reset to default values, while metadata is saved. The Least Recently Used (LRU)
scheme performs the statement cache operation.
...
Рейтинг: 0 / 0
Как отключить reuse of prepared statements
    #34443217
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
? читать как ,
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как отключить reuse of prepared statements
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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