Hi,

I´d like to enable OpenJPA´s query cache in a selective way, i. e. it
should be disabled unless I enable it explicitly using
query.getFetchPlan().setQueryResult(true).

I´ve figured out that this requires
FetchConfigurationImpl$ConfigurationState#queryCache to be set to false by
default, however, there does not seem to be a configuration property for
this.

So I ended up subclassing JDBCBrokerFactory and configure this via property
openjpa.BrokerFactory (see code below).

However I wonder if there is an easier way to achieve this?

Thanks and best regards,
Jörn

Code:

<property name="openjpa.BrokerFactory"
value="de.dwpbank.wp2d.wprecon.model.cache.CustomJDBCBrokerFactory" />


public class CustomJDBCBrokerFactory extends JDBCBrokerFactory {

    public CustomJDBCBrokerFactory(JDBCConfiguration conf) {
        super(conf);
    }

    @Override
    protected StoreManager newStoreManager() {
        return new JDBCStoreManager() {
            @Override
            public FetchConfiguration newFetchConfiguration() {
                return
super.newFetchConfiguration().setQueryCacheEnabled(false);
            }
        };
    }

    public static CustomJDBCBrokerFactory newInstance(ConfigurationProvider
cp) {
        JDBCConfigurationImpl conf = new JDBCConfigurationImpl();
        cp.setInto(conf);
        return new CustomJDBCBrokerFactory(conf);
    }
}

Reply via email to