|
When you create a
PersistenceManagerFactory
/
EntityManagerFactory
you define the
connection URL, driver name, and the username/password to use. This works perfectly well but does
not "pool" the connections so that they are efficiently opened/closed when needed to utilise
datastore resources in an optimum way. DataNucleus allows you to utilise a connection pool using
BoneCP to efficiently manage the connections to the datastore.
BoneCP is a third-party library providing
connection pooling. This is accessed by specifying the persistence property
datanucleus.connectionPoolingType
. To utilise BoneCP-based connection pooling we do this
// Specify our persistence properties used for creating our PMF/EMF
Properties props = new Properties();
properties.setProperty("javax.jdo.PersistenceManagerFactoryClass",
"org.datanucleus.jdo.JDOPersistenceManagerFactory");
properties.setProperty("datanucleus.ConnectionDriverName","com.mysql.jdbc.Driver");
properties.setProperty("datanucleus.ConnectionURL","jdbc:mysql://localhost/myDB");
properties.setProperty("datanucleus.ConnectionUserName","login");
properties.setProperty("datanucleus.ConnectionPassword","password");
properties.setProperty("datanucleus.connectionPoolingType", "BoneCP");
So the
PMF
/
EMF
will use connection pooling using BoneCP. To do this you will
need the
BoneCP
JAR (and SLF4J, google-collections) to be in the CLASSPATH.
You can also specify persistence properties to control the actual pooling.
The currently supported properties for BoneCP are shown below
# Pooling of Connections
datanucleus.connectionPool.maxPoolSize=5
datanucleus.connectionPool.minPoolSize=3
# Pooling of PreparedStatements
datanucleus.connectionPool.maxStatements=20
|
|