Glassfish 2.1 никогда не использует заявления Postgresql и Eclipselink? - PullRequest
1 голос
/ 30 июня 2011

Мы используем Glassfish server 2.1 с Eclipselink JPA 2.1 и подключаемся к базе данных PostgreSQL 8.4.8. Проблема заключается в том, что в файле журнала Postgres я всегда вижу подготовку операторов, которые были созданы с помощью em.createQuery или em.createNamedQuery. Кажется, что ни одно из подготовленных заявлений не используется повторно. Поэтому производительность действительно плохая.

Я попытался установить настройку JDBC по умолчанию prepareThreshold от 5 до 1. Это только изменило то, что безымянные заявления теперь были названы. Но они все еще не были повторно использованы.

Я также попробовал несколько настроек для пула соединений, так как подготовленные операторы зависят от соединения, но вернули значения по умолчанию org.postgresql.ds.PGSimpleDataSource и javax.sql.DataSouce.

Я включил кэширование операторов также в файле persistence.xml:

<property name="eclipselink.jdbc.cache-statements" value="true"/>

Поддерживает ли Glassfish 2.1 кэширование операторов? И если он делает то, что настройки я пропустил?

Любые советы приветствуются.

Ответы [ 2 ]

1 голос
/ 01 июля 2011

Учитывая это: http://www.youtube.com/watch?v=hfx_M0p0KoM кажется, что 2.1 не поддерживает кэширование операторов.

0 голосов
/ 04 июля 2011

Для полноты:

Вот ссылка на параметр кэширования операторов в GlassFish 3.1: http://download.oracle.com/docs/cd/E18930_01/html/821-2418/giyck.html#giyci

Вот запись в блоге для разработчиков, подробно объясняющая новую функцию: http://blogs.oracle.com/technical/entry/statement_caching_in_glassfish_v3

...