Butterfly Persistence Connection Management

Jakob Jenkov
Last update: 2021-06-30

In this tutorial we will have a look at how Butterfly Persistence is able to manage connections, meaning how either you, or Butterfly Persistence opens connections to a relational database. This is what I refer to as Butterfly Persistence connection management.

Connection Opening Strategies

Your connection management strategy determines how Butterfly Persistence obtains a database connections. You can either let Butterfly Persistence open connections, or open them manually and pass them on to Butterfly Persistence. This text will show how to do both plus discuss a few more issues and features related to connection management. Here is a list of the topics covered:

  1. Automatic Connection Opening
  2. Manual Connection Opening
  3. Full Access to Connection

Automatic Connection Opening

If you want Butterfly Persistence to manage the opening of connections, pass a javax.sql.DataSource implementation into the constructor of the PersistenceManager. Here is how that looks:

public static final PersistenceManager persistenceManager =
    new PersistenceManager(dataSource);

Now, when you create an IDaos instance it will automatically be provided with a connection obtained from the DataSource passed to the PersistenceManager. Here is how creating an IDaos instance looks using automatic connection management:

IDaos daos = persistenceManager.createDaos();


Butterfly Persistence comes with a simple implementation of the DataSource interface if you should need it. It's called


Here is how to use it:

DataSource dataSource = new SimpleDataSource(
        "driverName", "dbUrl", "user", "password");

PersistenceManager persistenceManager =
        new PersistenceManager(dataSource);

Manual Connection Opening

It is possible to manage the opening of connections yourself. All you have to do is pass the open connection to the PersistenceManager when creating the IDaos instance. You can do this even if the PersistenceManager has a DataSource set. Here is how it looks:

IDaos daos = persistenceManager.createDaos(connection);

When calling the createDaos(connection) method the PersistenceManager will use the given connection rather than trying to obtain it from its DataSource. This method will also work if the PersistenceManager has no DataSource set.

Full Access to Connection

You can always access the connection from the IDaos instance. Here is how:

Connection connection = daos.getConnection();

Jakob Jenkov

Featured Videos

Java ForkJoinPool

P2P Networks Introduction


Java Persistence
Close TOC
All Tutorial Trails
All Trails
Table of contents (TOC) for this tutorial trail
Trail TOC
Table of contents (TOC) for this tutorial
Page TOC
Previous tutorial in this tutorial trail
Next tutorial in this tutorial trail