|
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
datanucleus-connectionpool
plugin to be in the CLASSPATH, along with the
BoneCP
JAR.
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
|
|