Hi Rick, thanks for you thought. The reason I´m using the custom JDBCBrokerFactory is that I want to have the QueryCache disabled _by default_ and only enable it on occasion. With the out-of-the-box-JDBCBrokerFactory it´s only possible the other way around (disable on occasion).
Now, my custom JDBCBrokerFactory is working in a non-OSGi-Environment. Unfortunately, due to OPENJPA-1491, I´m currently not able to load my custom JDBCBrokerFactory (which is living in my own bundle) as openjpa will only load a BrokerFactory using the OpenJPA-Bundle´s classloader. Kind regards, Jörn Viele Grüße Jörn On Mon, Nov 10, 2014 at 7:24 PM, Rick Curtis <curti...@gmail.com> wrote: > > However I wonder if there is an easier way to achieve this? > I thought there was an easier way... but after digging around a bit I > didn't come up with anything better. While what you are doing is completely > valid, I'd almost recommend the creation of a helper method that will > disable/enable the QueryReultsCache when you create a query. A custom > JDBCBrokerFactory seems like quite a lot of complexity when you could just > call .setQueryCacheEnabled(false) when you do/don't want caching... then > again, that is just my opinion. > > I think the ideal solution would involve the addition of a new > configuration property to OpenJPAConfigurationImpl. Something similar to > openjpa.MaxFetchDepth[1]. > > Thanks, > Rick > > [1] > > http://ci.apache.org/projects/openjpa/trunk/docbook/manual.html#openjpa.MaxFetchDepth > > On Mon, Nov 10, 2014 at 1:30 AM, Jörn Gersdorf <joern.gersd...@gmail.com> > wrote: > > > 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); > > } > > } > > > > > > -- > *Rick Curtis* >