Мы используем 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 кэширование операторов? И если он делает то, что настройки я пропустил?
Любые советы приветствуются.