Which ConnectionFactory implementation should I use?
The PooledConnectionFactory is generally recommended for stand-alone deployments (i.e. not running within AS or Servlet container). ManagedConnectionFactory can be used when running in a managed environment where a DataSource is present, so that connection pooling is performed within the DataSource.